From patchwork Sun May 11 21:29:21 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever III X-Patchwork-Id: 347826 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id AA0F3140083 for ; Mon, 12 May 2014 07:29:29 +1000 (EST) Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s4BLTQsa007679 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 11 May 2014 21:29:27 GMT Received: from oss.oracle.com (oss-external.oracle.com [137.254.96.51]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s4BLTQhu015161 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 11 May 2014 21:29:26 GMT Received: from localhost ([127.0.0.1] helo=oss.oracle.com) by oss.oracle.com with esmtp (Exim 4.63) (envelope-from ) id 1WjbJG-0004CF-B2; Sun, 11 May 2014 14:29:26 -0700 Received: from ucsinet22.oracle.com ([156.151.31.94]) by oss.oracle.com with esmtp (Exim 4.63) (envelope-from ) id 1WjbJE-0004C1-0N for fedfs-utils-devel@oss.oracle.com; Sun, 11 May 2014 14:29:24 -0700 Received: from aserp1020.oracle.com (aserp1020.oracle.com [141.146.126.67]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s4BLTNhi024510 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Sun, 11 May 2014 21:29:23 GMT Received: from mail-ig0-f179.google.com (mail-ig0-f179.google.com [209.85.213.179]) by aserp1020.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s4BLTMLj027506 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Sun, 11 May 2014 21:29:22 GMT Authentication-Results: aserp1020.oracle.com; dkim=pass reason="2048-bit key" header.d=gmail.com header.i=@gmail.com header.b=wvI3IgjI Received: by mail-ig0-f179.google.com with SMTP id hn18so3095167igb.0 for ; Sun, 11 May 2014 14:29:22 -0700 (PDT) X-Received: by 10.50.49.109 with SMTP id t13mr36187476ign.2.1399843762131; Sun, 11 May 2014 14:29:22 -0700 (PDT) Received: from seurat.1015granger.net ([2604:8800:100:81fc:20c:29ff:fe44:ec31]) by mx.google.com with ESMTPSA id x13sm4043413igp.0.2014.05.11.14.29.21 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 11 May 2014 14:29:21 -0700 (PDT) To: fedfs-utils-devel@oss.oracle.com From: Chuck Lever Date: Sun, 11 May 2014 17:29:21 -0400 Message-ID: <20140511212921.13852.42076.stgit@seurat.1015granger.net> In-Reply-To: <20140511212416.13852.92639.stgit@seurat.1015granger.net> References: <20140511212416.13852.92639.stgit@seurat.1015granger.net> User-Agent: StGit/0.16 MIME-Version: 1.0 X-Flow-Control-Info: class=Pass-to-MM reputation=ipRisk-All ip=209.85.213.179 ct-class=R5 ct-vol1=-96 ct-vol2=8 ct-vol3=7 ct-risk=51 ct-spam1=83 ct-spam2=7 ct-bulk=6 rcpts=1 size=1265 X-Sendmail-CM-Score: 0.00% X-Sendmail-CM-Analysis: v=2.1 cv=I/xcGrQg c=1 sm=1 tr=0 a=YUaGzUg3CBXOTHzF2HZZ+Q==:117 a=dzsqy3y4QnMA:10 a=fhz7x3lGqcEA:10 a=dPGociXpb70A:10 a=IkcTkHD0fZMA:10 a=xqWC_Br6kY4A:10 a=yPCof4ZbAAAA:8 a=Lb1rMZzfAAAA:8 a=1XWaLZrsAAAA:8 a=JcnYq7RSFhSh4NdYab0A:9 a=QEXdDO 2ut3YA:10 a=7DSvI1NPTFQA:10 X-Sendmail-CT-RefID: str=0001.0A020201.536FEBB3.0016, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-Sendmail-CT-Classification: not spam Subject: [fedfs-utils] [PATCH 09/17] libnsdb: Fix memory leak in nsdb_list_find_entries_s() X-BeenThere: fedfs-utils-devel@oss.oracle.com X-Mailman-Version: 2.1.9 Precedence: list Reply-To: fedfs-utils Developers List-Id: fedfs-utils Developers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: fedfs-utils-devel-bounces@oss.oracle.com Errors-To: fedfs-utils-devel-bounces@oss.oracle.com X-Source-IP: acsinet22.oracle.com [141.146.126.238] Rewrite the tail of nsdb_list_find_entries_s() in bfields-normal form to ensure "tmp" is freed if the return value is not FEDFS_OK. Fixes: b82f3ba222b51fe607a0da34a1158425f55bde90 Signed-off-by: Chuck Lever --- src/libnsdb/fileserver.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c index c3a0e29..087c846 100644 --- a/src/libnsdb/fileserver.c +++ b/src/libnsdb/fileserver.c @@ -1765,17 +1765,21 @@ nsdb_list_find_entries_s(nsdb_t host, const char *nce, char ***fsns) } } - if (retval == FEDFS_OK) { - if (tmp[0] == NULL) { - xlog(D_CALL, "%s: No FSN entries under %s", - __func__, nce); - retval = FEDFS_ERR_NSDB_NOFSN; - } else { - xlog(D_CALL, "%s: returning fsn list", __func__); - *fsns = tmp; - } - } else + if (retval != FEDFS_OK) { nsdb_free_string_array(tmp); + goto out; + } + + if (tmp[0] == NULL) { + xlog(D_CALL, "%s: No FSN entries under %s", + __func__, nce); + nsdb_free_string_array(tmp); + retval = FEDFS_ERR_NSDB_NOFSN; + goto out; + } + + xlog(D_CALL, "%s: returning fsn list", __func__); + *fsns = tmp; out: ldap_msgfree(response);