:: commit b00ad794de77f7f06f45b1d52c8a17c01cc97052

mintsuki <mintsuki@protonmail.com> — 2022-08-20 23:10

parents: 9a8730875d

ext: Fix abs-path related bug with symlink handling

diff --git a/common/fs/ext2.s2.c b/common/fs/ext2.s2.c
index 3bf26228..07232243 100644
--- a/common/fs/ext2.s2.c
+++ b/common/fs/ext2.s2.c
@@ -370,8 +370,11 @@ static bool symlink_to_inode(struct ext2_inode *inode, struct ext2_file_handle *
 }
 
 static bool ext2_parse_dirent(struct ext2_dir_entry *dir, struct ext2_file_handle *fd, const char *path) {
-    if (*path == '/')
-        path++;
+    if (*path != '/') {
+        panic(true, "ext2: Path does not start in /");
+    }
+
+    path++;
 
     struct ext2_inode current_inode = fd->root_inode;
 
@@ -380,8 +383,8 @@ static bool ext2_parse_dirent(struct ext2_dir_entry *dir, struct ext2_file_handl
 
     bool ret;
 
-    const char *cwd = path;
-    size_t cwd_len = 0;
+    const char *cwd = path - 1; // because /
+    size_t cwd_len = 1;
 
 next:
     memset(token, 0, 256);
tab: 248 wrap: offon