1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-04 10:12:14 +02:00

ext4: Fix memory leak in case of failure

temp_ptr should always be freed, even if the function is left via
goto fail.

Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
This commit is contained in:
Stefan Brüns
2016-09-06 04:36:51 +02:00
committed by Tom Rini
parent 0ceef3d371
commit 87a40b6e03

View File

@@ -974,7 +974,6 @@ int ext4fs_write(const char *fname, unsigned char *buffer,
sizeof(struct ext2_inode)); sizeof(struct ext2_inode));
if (ext4fs_put_metadata(temp_ptr, parent_itable_blkno)) if (ext4fs_put_metadata(temp_ptr, parent_itable_blkno))
goto fail; goto fail;
free(temp_ptr);
} else { } else {
/* /*
* If parent and child fall in same inode table block * If parent and child fall in same inode table block
@@ -985,7 +984,6 @@ int ext4fs_write(const char *fname, unsigned char *buffer,
gd_index--; gd_index--;
if (ext4fs_put_metadata(temp_ptr, itable_blkno)) if (ext4fs_put_metadata(temp_ptr, itable_blkno))
goto fail; goto fail;
free(temp_ptr);
} }
ext4fs_update(); ext4fs_update();
ext4fs_deinit(); ext4fs_deinit();
@@ -996,6 +994,7 @@ int ext4fs_write(const char *fname, unsigned char *buffer,
fs->curr_inode_no = 0; fs->curr_inode_no = 0;
free(inode_buffer); free(inode_buffer);
free(g_parent_inode); free(g_parent_inode);
free(temp_ptr);
g_parent_inode = NULL; g_parent_inode = NULL;
return 0; return 0;
@@ -1003,6 +1002,7 @@ fail:
ext4fs_deinit(); ext4fs_deinit();
free(inode_buffer); free(inode_buffer);
free(g_parent_inode); free(g_parent_inode);
free(temp_ptr);
g_parent_inode = NULL; g_parent_inode = NULL;
return -1; return -1;