From patchwork Tue Dec 3 12:11:31 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zheng Liu X-Patchwork-Id: 296158 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4C0C42C009F for ; Tue, 3 Dec 2013 23:09:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753094Ab3LCMJS (ORCPT ); Tue, 3 Dec 2013 07:09:18 -0500 Received: from mail-pb0-f50.google.com ([209.85.160.50]:53756 "EHLO mail-pb0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752443Ab3LCMJR (ORCPT ); Tue, 3 Dec 2013 07:09:17 -0500 Received: by mail-pb0-f50.google.com with SMTP id rr13so20935103pbb.37 for ; Tue, 03 Dec 2013 04:09:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xI0m0elLyC+pK73CwcO9sLcdHaZna58e0PDho4CNmw8=; b=mVLo0O1+CJvhfWODyykrx68A76bP8QrX72V+ulSB0BoIMOG7aePZ4fjjQOFLs5XhgD NKQ3yQuTavDy8bOQkqLZG0PLkvrfKOk+9SLwabjLRi/U7W9yTUnpja7dvw9X/8Cx3zTO OqgWMOY8Yb2yDCGrCbsFt/euCC1Zh3uSKVwii1z4IJmJtHdwoZfQfuJL4gNFYk9vq8aO 2d8ccNDyx793EdBexOch7O90E7cu/JNclhwVD0Jo6gte/cJfrq7ssr1w8N/NGfhhTWN8 onSsWSoR+MYzKnTRQ0yaAqanhTYqaEdEigoruRA7c7HA/igZb0Nk7JI64BCo4uBl02aH 9HzQ== X-Received: by 10.66.7.68 with SMTP id h4mr75696810paa.0.1386072557102; Tue, 03 Dec 2013 04:09:17 -0800 (PST) Received: from alpha.taobao.ali.com ([182.92.247.2]) by mx.google.com with ESMTPSA id xv2sm129628866pbb.39.2013.12.03.04.09.15 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Tue, 03 Dec 2013 04:09:16 -0800 (PST) From: Zheng Liu To: linux-ext4@vger.kernel.org Cc: Theodore Ts'o , "Darrick J. Wong" Subject: [PATCH v2 04/28] libext2fs: fix memory leaks in extended attribute code Date: Tue, 3 Dec 2013 20:11:31 +0800 Message-Id: <1386072715-9869-5-git-send-email-wenqing.lz@taobao.com> X-Mailer: git-send-email 1.7.9.7 In-Reply-To: <1386072715-9869-1-git-send-email-wenqing.lz@taobao.com> References: <1386072715-9869-1-git-send-email-wenqing.lz@taobao.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: "Darrick J. Wong" Fix some memory leaks and data disclosure problems in the extended attribute writing code. Signed-off-by: Darrick J. Wong --- 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 2fae516..94bc89b 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; } @@ -505,7 +506,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;