From: "Darrick J. Wong" <darrick.wong@xxxxxxxxxx> Fix some memory leaks and data disclosure problems in the extended attribute writing code. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- lib/ext2fs/ext_attr.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c index f7d623a..a8a8c93 100644 --- a/lib/ext2fs/ext_attr.c +++ b/lib/ext2fs/ext_attr.c @@ -364,7 +364,7 @@ static errcode_t prep_ea_block_for_write(ext2_filsys fs, ext2_ino_t ino, /* Single-user block. We're done here. */ if (header->h_refcount == 1) - return 0; + goto out2; /* We need to CoW the block. */ header->h_refcount--; @@ -384,10 +384,11 @@ static errcode_t prep_ea_block_for_write(ext2_filsys fs, ext2_ino_t ino, goal = ext2fs_inode_table_loc(fs, grp); err = ext2fs_alloc_block2(fs, goal, NULL, &blk); if (err) - return err; + goto out2; ext2fs_file_acl_block_set(fs, (struct ext2_inode *)inode, blk); out2: - ext2fs_free_mem(&block_buf); + if (block_buf) + ext2fs_free_mem(&block_buf); out: return err; } @@ -509,7 +510,7 @@ errcode_t ext2fs_xattrs_write(struct ext2_xattr_handle *handle) write_ea_block: /* Write the EA block */ - err = ext2fs_get_mem(handle->fs->blocksize, &block_buf); + err = ext2fs_get_memzero(handle->fs->blocksize, &block_buf); if (err) goto out; -- 1.7.9.7 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html