From 99ff317e5e314b42b7f1cb4400b9afaaeda9c5b1 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Fri, 25 Nov 2022 22:28:45 +0100 Subject: ext2 terminate file names with \0 --- kernel/src/fs/ext2.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'kernel/src') diff --git a/kernel/src/fs/ext2.c b/kernel/src/fs/ext2.c index df4a24a..d38a57e 100644 --- a/kernel/src/fs/ext2.c +++ b/kernel/src/fs/ext2.c @@ -89,16 +89,17 @@ list_t* directory_to_entries(uint32_t inode) ext2_dentry = (ext2_dentry_t*)kalloc(sizeof(ext2_dentry_t)); memcpy(ext2_dentry, (char*)block + block_offset, sizeof(ext2_dentry_t) - sizeof(char*)); - // get dentry name - ext2_dentry->name = (char*)kalloc(ext2_dentry->name_length_lower); - memcpy(ext2_dentry->name, (char*)block + block_offset + sizeof(ext2_dentry_t) - sizeof(char*), ext2_dentry->name_length_lower); - - if (inode == 0) { - kfree(ext2_dentry->name); + // dentry is unused + if (ext2_dentry->inode == 0) { kfree(ext2_dentry); - break; + continue; } + // get dentry name + ext2_dentry->name = (char*)kalloc(ext2_dentry->name_length_lower + 1); + memcpy(ext2_dentry->name, (char*)block + block_offset + sizeof(ext2_dentry_t) - sizeof(char*), ext2_dentry->name_length_lower); + ext2_dentry->name[ext2_dentry->name_length_lower] = '\0'; + // put dentry in list add_to_list_head(&list, ext2_dentry); @@ -231,7 +232,7 @@ void ls(uint32_t inode) for (list_t* tmp = dir; tmp != NULL; tmp = tmp->next) { ext2_dentry_t* ext2_dentry; ext2_dentry = tmp->data; - printf("inode: %d\n", ext2_dentry->inode); + printf("inode: %d, name: %s\n", ext2_dentry->inode, ext2_dentry->name); } } -- cgit v1.2.3