diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-11-25 22:28:45 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-11-25 22:28:45 +0100 |
| commit | 99ff317e5e314b42b7f1cb4400b9afaaeda9c5b1 (patch) | |
| tree | e0b0f1270180f3ede3fffd76f285410f775b9754 /kernel/src/fs/ext2.c | |
| parent | 1d673e7e628db462215abcec06641063a6165b9b (diff) | |
ext2 terminate file names with \0
Diffstat (limited to 'kernel/src/fs/ext2.c')
| -rw-r--r-- | kernel/src/fs/ext2.c | 17 |
1 files changed, 9 insertions, 8 deletions
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); } } |
