From 72a02047d52a02c035609a897a69f1465083bdb0 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Sat, 17 May 2025 17:14:06 +0300 Subject: [PATCH] fix opening directories and saving inode_ptr instead of inode in fd --- src/fs.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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);