erofs-utils: lib: Restore memory address before free()
authorSandeep Dhavale <dhavale@google.com>
Tue, 19 Sep 2023 21:02:20 +0000 (14:02 -0700)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Wed, 20 Sep 2023 11:35:12 +0000 (19:35 +0800)
We move `idx` pointer as we iterate through for loop based on `count`. If
we error out from the loop, use the original pointer of allocated memory
when calling free().

Fixes: 39147b48b76d ("erofs-utils: lib: add erofs_rebuild_load_tree() helper")
Signed-off-by: Sandeep Dhavale <dhavale@google.com>
Link: https://lore.kernel.org/r/20230919210220.3657736-1-dhavale@google.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
lib/rebuild.c

index 9751f0ef3c8df6e940bdab0e4fe390d7d1c45c9e..5993730344bff0619fba55422122db670873e2c5 100644 (file)
@@ -192,7 +192,7 @@ static int erofs_rebuild_fixup_inode_index(struct erofs_inode *inode)
        inode->u.chunkformat |= chunkbits - sbi.blkszbits;
        return 0;
 err:
-       free(idx);
+       free(inode->chunkindexes);
        inode->chunkindexes = NULL;
        return ret;
 }