fix dangling pointer issues in ext2dr
authorLunaixsky <lunaixsky@qq.com>
Sat, 10 May 2025 01:09:24 +0000 (02:09 +0100)
committerLunaixsky <lunaixsky@qq.com>
Sat, 10 May 2025 01:09:24 +0000 (02:09 +0100)
lunaix-os/kernel/fs/ext2/dir.c

index 9058c8a5e8dffdb66334cf15d15037a2c5b706e4..06933db7fd9347a462a2765f3f185c37a450fc16 100644 (file)
@@ -565,7 +565,8 @@ ext2dr_insert(struct v_inode* this, struct ext2b_dirent* dirent,
         __release_dnode_blocks(e_dno);
     }
     else {
-        *e_dno_out = e_dno;
+        *e_dno_out = valloc(sizeof(*e_dno));
+        memcpy(*e_dno_out, e_dno, sizeof(*e_dno));
     }
 
     return errno;