From: Brian Behlendorf Date: Wed, 21 Mar 2007 21:38:47 +0000 (-0400) Subject: [COVERITY] Fix (error case) memory leak in libext2fs (ext2fs_write_inode_full) X-Git-Tag: E2FSPROGS-1_40~101 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=e649be9daaa1190258c7d5f6521f7be19b0bed28;p=tools%2Fe2fsprogs.git [COVERITY] Fix (error case) memory leak in libext2fs (ext2fs_write_inode_full) Need to free w_inode on early exit if w_inode != &temp_inode. Coverity ID: 22: Resource Leak Signed-off-by: Brian Behlendorf --- diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog index 2bbcd73..b0c0f7f 100644 --- a/lib/ext2fs/ChangeLog +++ b/lib/ext2fs/ChangeLog @@ -1,3 +1,8 @@ +2007-03-21 Theodore Tso + + * inode.c (ext2fs_write_inode_full): Fix memory leak on error + return (when the inode table is missing). + 2006-11-30 Theodore Tso * ext2_fs.h (struct ext4_group_desc): Fix missing bg_pad which diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c index 8d528b4..6c845a6 100644 --- a/lib/ext2fs/inode.c +++ b/lib/ext2fs/inode.c @@ -669,8 +669,10 @@ errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino, offset = ((ino - 1) % EXT2_INODES_PER_GROUP(fs->super)) * EXT2_INODE_SIZE(fs->super); block = offset >> EXT2_BLOCK_SIZE_BITS(fs->super); - if (!fs->group_desc[(unsigned) group].bg_inode_table) - return EXT2_ET_MISSING_INODE_TABLE; + if (!fs->group_desc[(unsigned) group].bg_inode_table) { + retval = EXT2_ET_MISSING_INODE_TABLE; + goto errout; + } block_nr = fs->group_desc[(unsigned) group].bg_inode_table + block; offset &= (EXT2_BLOCK_SIZE(fs->super) - 1);