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:
parent
0ceef3d371
commit
87a40b6e03
@ -974,7 +974,6 @@ int ext4fs_write(const char *fname, unsigned char *buffer,
|
||||
sizeof(struct ext2_inode));
|
||||
if (ext4fs_put_metadata(temp_ptr, parent_itable_blkno))
|
||||
goto fail;
|
||||
free(temp_ptr);
|
||||
} else {
|
||||
/*
|
||||
* 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--;
|
||||
if (ext4fs_put_metadata(temp_ptr, itable_blkno))
|
||||
goto fail;
|
||||
free(temp_ptr);
|
||||
}
|
||||
ext4fs_update();
|
||||
ext4fs_deinit();
|
||||
@ -996,6 +994,7 @@ int ext4fs_write(const char *fname, unsigned char *buffer,
|
||||
fs->curr_inode_no = 0;
|
||||
free(inode_buffer);
|
||||
free(g_parent_inode);
|
||||
free(temp_ptr);
|
||||
g_parent_inode = NULL;
|
||||
|
||||
return 0;
|
||||
@ -1003,6 +1002,7 @@ fail:
|
||||
ext4fs_deinit();
|
||||
free(inode_buffer);
|
||||
free(g_parent_inode);
|
||||
free(temp_ptr);
|
||||
g_parent_inode = NULL;
|
||||
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user