[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