From 3ee5120d0795b361c3548e9bb13cadf33802f73a Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Wed, 23 Jun 2010 12:11:49 -0700 Subject: fs: enforce filetypes in open_file Enforce that the file type in open_file is a plain file. Signed-off-by: H. Peter Anvin --- core/fs/fs.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/core/fs/fs.c b/core/fs/fs.c index 3ae12ec9..c16f9550 100644 --- a/core/fs/fs.c +++ b/core/fs/fs.c @@ -330,12 +330,20 @@ int open_file(const char *name, struct com32_filedata *filedata) mangle_name(mangled_name, name); rv = searchdir(mangled_name); - if (rv >= 0) { - file = handle_to_file(rv); - filedata->size = file->inode->size; - filedata->blocklg2 = SECTOR_SHIFT(file->fs); - filedata->handle = rv; + if (rv < 0) + return rv; + + file = handle_to_file(rv); + + if (file->inode->mode != DT_REG) { + _close_file(file); + return -1; } + + filedata->size = file->inode->size; + filedata->blocklg2 = SECTOR_SHIFT(file->fs); + filedata->handle = rv; + return rv; } -- cgit v1.2.1