From 657f508cbf4c2ff180ea086bd7041125ec4e5b61 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Sun, 10 Aug 2014 18:32:21 -0400 Subject: [PATCH] libext2fs: fix memory leak when failing to iterate inline_data directory The xattr_get method returns to us a pointer to a buffer containing the EA value. If for some reason we decide to fail out of iterating the EA part of an inline-data directory, we must free the buffer that xattr_get passed to us (via inline_data_ea_get). Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- lib/ext2fs/inline_data.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ext2fs/inline_data.c b/lib/ext2fs/inline_data.c index 3ba04ae8..7eb8b946 100644 --- a/lib/ext2fs/inline_data.c +++ b/lib/ext2fs/inline_data.c @@ -218,7 +218,7 @@ int ext2fs_inline_data_dir_iterate(ext2_filsys fs, ext2_ino_t ino, goto out; } if (data.ea_size <= 0) - goto out; + goto out1; ctx->buf = data.ea_data; ctx->buflen = data.ea_size; @@ -226,7 +226,7 @@ int ext2fs_inline_data_dir_iterate(ext2_filsys fs, ext2_ino_t ino, ctx->errcode = ext2fs_dirent_swab_in2(fs, ctx->buf, ctx->buflen, 0); if (ctx->errcode) { ret |= BLOCK_ABORT; - goto out; + goto out1; } #endif