diff --git a/src/fs.c b/src/fs.c index b2c3fe0..e540d02 100644 --- a/src/fs.c +++ b/src/fs.c @@ -1029,7 +1029,17 @@ int fs_open(void *d) return 0; } - fs_file_descriptions[free_fd].inode = rp.target_inode_ptr; + { + struct fs_inode i; + read_block(read_inode_ptr(rp.target_inode_ptr), &i); + + if (i.ftype == DIRECTORY) { + pr_err("can't open '%s': file is a directory\n", rp.target_fname); + return 0; + } + } + + fs_file_descriptions[free_fd].inode = read_inode_ptr(rp.target_inode_ptr); fs_file_descriptions[free_fd].rw_offset = 0; pr_stdout("%d\n", free_fd);