[syslinux:master] fs: enforce filetypes in open_file
syslinux-bot for H. Peter Anvin
hpa at zytor.com
Wed Jun 23 12:15:03 PDT 2010
Commit-ID: 3ee5120d0795b361c3548e9bb13cadf33802f73a
Gitweb: http://syslinux.zytor.com/commit/3ee5120d0795b361c3548e9bb13cadf33802f73a
Author: H. Peter Anvin <hpa at zytor.com>
AuthorDate: Wed, 23 Jun 2010 12:11:49 -0700
Committer: H. Peter Anvin <hpa at zytor.com>
CommitDate: Wed, 23 Jun 2010 12:11:49 -0700
fs: enforce filetypes in open_file
Enforce that the file type in open_file is a plain file.
Signed-off-by: H. Peter Anvin <hpa at zytor.com>
---
core/fs/fs.c | 18 +++++++++++++-----
1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/core/fs/fs.c b/core/fs/fs.c
index 3ae12ec..c16f955 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;
}
More information about the Syslinux-commits
mailing list