From patchwork Tue Dec 25 14:21:10 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Jarosch X-Patchwork-Id: 208107 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 827AD2C00AE for ; Wed, 26 Dec 2012 01:21:20 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753747Ab2LYOVO (ORCPT ); Tue, 25 Dec 2012 09:21:14 -0500 Received: from re04.intra2net.com ([82.165.46.26]:36981 "EHLO re04.intra2net.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753641Ab2LYOVN (ORCPT ); Tue, 25 Dec 2012 09:21:13 -0500 X-Greylist: delayed 341 seconds by postgrey-1.27 at vger.kernel.org; Tue, 25 Dec 2012 09:21:13 EST Received: from intranator.m.i2n (unknown [172.16.1.99]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by re04.intra2net.com (Postfix) with ESMTP id B766930133; Tue, 25 Dec 2012 15:21:12 +0100 (CET) Received: from localhost (intranator.m.i2n [127.0.0.1]) by localhost (Postfix) with ESMTP id 88E312AC57; Tue, 25 Dec 2012 15:21:12 +0100 (CET) X-Virus-Scanned: by Intranator (www.intra2net.com) with AMaViS and F-Secure AntiVirus (fsavdb 2012-12-25_04) X-Spam-Status: X-Spam-Level: 0 Received: from pikkukde.a.i2n (unknown [192.168.12.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: smtp-auth-user) by intranator.m.i2n (Postfix) with ESMTPSA id B6BD22AC54; Tue, 25 Dec 2012 15:21:10 +0100 (CET) Message-ID: <50D9B656.6040809@intra2net.com> Date: Tue, 25 Dec 2012 15:21:10 +0100 From: Thomas Jarosch User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: Patrick McHardy CC: netfilter-devel@vger.kernel.org Subject: [libnl-nft PATCH] Fix file descriptor leak on error Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Detected by cppcheck Signed-off-by: Thomas Jarosch --- lib/utils.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/utils.c b/lib/utils.c index 4007bee..50ca6d9 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -60,24 +60,32 @@ int __nl_read_num_str_file(const char *path, int (*cb)(long, const char *)) continue; num = strtol(buf, &end, 0); - if (end == buf) + if (end == buf) { + fclose(fd); return -NLE_INVAL; + } - if (num == LONG_MIN || num == LONG_MAX) + if (num == LONG_MIN || num == LONG_MAX) { + fclose(fd); return -NLE_RANGE; + } while (*end == ' ' || *end == '\t') end++; goodlen = strcspn(end, "#\r\n\t "); - if (goodlen == 0) + if (goodlen == 0) { + fclose(fd); return -NLE_INVAL; + } end[goodlen] = '\0'; err = cb(num, end); - if (err < 0) + if (err < 0) { + fclose(fd); return err; + } } fclose(fd);