From patchwork Tue Nov 24 11:45:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rahul Jain X-Patchwork-Id: 7689981 X-Patchwork-Delegate: johannes@sipsolutions.net Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 1692EBF90C for ; Tue, 24 Nov 2015 11:46:28 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3E87220636 for ; Tue, 24 Nov 2015 11:46:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E7FF620618 for ; Tue, 24 Nov 2015 11:46:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752592AbbKXLqW (ORCPT ); Tue, 24 Nov 2015 06:46:22 -0500 Received: from mailout3.samsung.com ([203.254.224.33]:49192 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752093AbbKXLqR (ORCPT ); Tue, 24 Nov 2015 06:46:17 -0500 Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NYB00JQ0I13P0D0@mailout3.samsung.com> for linux-wireless@vger.kernel.org; Tue, 24 Nov 2015 20:46:15 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.126]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id 1A.27.27792.70E44565; Tue, 24 Nov 2015 20:46:15 +0900 (KST) X-AuditID: cbfee691-f79bf6d000006c90-d5-56544e07f010 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 70.6B.00996.70E44565; Tue, 24 Nov 2015 20:46:15 +0900 (KST) Received: from Rahul.107.10.86.17 ([107.109.203.158]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0NYB00BVHHZYWK00@mmp1.samsung.com>; Tue, 24 Nov 2015 20:46:15 +0900 (KST) From: Rahul Jain To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Amit Khatri , Rahul Jain Subject: [PATCH] Fix memory leak if nla_put fails Date: Tue, 24 Nov 2015 17:15:27 +0530 Message-id: <1448365527-14498-1-git-send-email-rahul.jain@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrJLMWRmVeSWpSXmKPExsWyRsSkTpfdLyTM4MYFaYvrJ7awWXzc8InF 4s2KO+wWP/oDHFg8+rasYvTo793G4vF5k1wAcxSXTUpqTmZZapG+XQJXRuvtH+wFh0QrJr5r Zm9gvCnQxcjJISFgIvF18jt2CFtM4sK99WxdjFwcQgIrGCUWv+hmhynavHopM0RiKaPErNmr GCGc74wSW94tA6tiE9CUWHZ5IhOILSIgK9F86DILiM0sUCAxqXc2mC0sYCgxY8VmRhCbRUBV YvqcVUC9HBy8Am4Sa6+VQCyTkzh5bDIryHwJgftsEotuXWKBqBeQ+Db5EAtIvQTQ/E0HmCHq JSUOrrjBMoFRcAEjwypG0dSC5ILipPQiU73ixNzi0rx0veT83E2MwBA8/e/ZxB2M9w9YH2IU 4GBU4uGdURQcJsSaWFZcmXuI0RRow0RmKdHkfGCg55XEGxqbGVmYmpgaG5lbmimJ8+pI/wwW EkhPLEnNTk0tSC2KLyrNSS0+xMjEwSnVwFhsX2+4aX7ZBqe6dWKhC1c/e3TFzFDwbnq6sUNk Xfrv+SnNQr9SuXkPXPfuM0y87lPHKbLky2LOatlvc9ryav4tsDdRZfvy4Mgk1x06mzYnZl3S mVs1NTew5aHlK9Z2xn3t880l1SXdL9/I99misotz51K2rIcC75Sdd5sHTLWbs+nYrZDZL5RY ijMSDbWYi4oTAdtbaKU8AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGLMWRmVeSWpSXmKPExsVy+t9jAV12v5Awg2OzeS2un9jCZvFxwycW izcr7rBb/OgPcGDx6NuyitGjv3cbi8fnTXIBzFENjDYZqYkpqUUKqXnJ+SmZeem2St7B8c7x pmYGhrqGlhbmSgp5ibmptkouPgG6bpk5QNuUFMoSc0qBQgGJxcVK+naYJoSGuOlawDRG6PqG BMH1GBmggYQ1jBmtt3+wFxwSrZj4rpm9gfGmQBcjJ4eEgInE5tVLmSFsMYkL99azdTFycQgJ LGWUmDV7FSOE851RYsu7ZewgVWwCmhLLLk9kArFFBGQlmg9dZgGxmQUKJCb1zgazhQUMJWas 2MwIYrMIqEpMn7MKqJeDg1fATWLttRKIZXISJ49NZp3AyL2AkWEVo0RqQXJBcVJ6rlFearle cWJucWleul5yfu4mRnCYP5PewXh4l/shRgEORiUe3hlFwWFCrIllxZW5hxglOJiVRHit9UPC hHhTEiurUovy44tKc1KLDzGaAu2fyCwlmpwPjMG8knhDYxNzU2NTSxMLEzNLJXHeC/v9woQE 0hNLUrNTUwtSi2D6mDg4pRoYJbxnmbb0zfDf/nH/Bumr4vwhBmcWcpbtnJGjLLa1M8bS5ELZ PmNGq279FK597wNebFqrdcX6e8JLkS0p537ZTxO/fVmVZeuvdqfbudvy254q97RltTz/wl21 MpdJ63Hrpb92HFH8s3dV6ou9ZVCNtdL+P006NkLQYUqpQPTVxOwHXJscs5iUWIozEg21mIuK EwEOJ1lYiQIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Amit Khatri Signed-off-by: Amit Khatri Signed-off-by: Rahul Jain avoid memory leak because of nla_put_failure --- coalesce.c | 7 ++++++- wowlan.c | 28 ++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/coalesce.c b/coalesce.c index 36dcaef..9b13ab3 100644 --- a/coalesce.c +++ b/coalesce.c @@ -124,7 +124,8 @@ static int handle_coalesce_enable(struct nl80211_state *state, nla_nest_end(msg, nl_pat); free(mask); free(pat); - + pat=NULL; + mask=NULL; if (!next_pat) break; cur_pat = next_pat; @@ -155,6 +156,10 @@ static int handle_coalesce_enable(struct nl80211_state *state, err = 1; goto close; nla_put_failure: + if(pat) + free(pat); + if(mask) + free(mask); err = -ENOBUFS; close: fclose(f); diff --git a/wowlan.c b/wowlan.c index c30eab7..2e1d43d 100644 --- a/wowlan.c +++ b/wowlan.c @@ -89,7 +89,10 @@ static int wowlan_parse_tcp_file(struct nl_msg *msg, const char *fn) if (!pkt) goto close; - NLA_PUT(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD, len, pkt); + if(nla_put(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD, len, pkt) < 0){ + free(pkt); + goto nla_put_failure; + } free(pkt); } else if (strncmp(buf, "data.interval=", 14) == 0) { NLA_PUT_U32(msg, NL80211_WOWLAN_TCP_DATA_INTERVAL, @@ -97,13 +100,20 @@ static int wowlan_parse_tcp_file(struct nl_msg *msg, const char *fn) } else if (strncmp(buf, "wake=", 5) == 0) { unsigned char *pat, *mask; size_t patlen; - if (parse_hex_mask(buf + 5, &pat, &patlen, &mask)) goto close; - NLA_PUT(msg, NL80211_WOWLAN_TCP_WAKE_MASK, - DIV_ROUND_UP(patlen, 8), mask); - NLA_PUT(msg, NL80211_WOWLAN_TCP_WAKE_PAYLOAD, - patlen, pat); + if(nla_put(msg, NL80211_WOWLAN_TCP_WAKE_MASK, + DIV_ROUND_UP(patlen, 8), mask) < 0){ + free(mask); + free(pat); + goto nla_put_failure; + } + if(nla_put(msg, NL80211_WOWLAN_TCP_WAKE_PAYLOAD, + patlen, pat) < 0){ + free(pat); + free(mask); + goto nla_put_failure; + } free(mask); free(pat); } else if (strncmp(buf, "data.seq=", 9) == 0) { @@ -299,6 +309,8 @@ static int handle_wowlan_enable(struct nl80211_state *state, nla_nest_end(patterns, pattern); free(mask); free(pat); + pat=NULL; + mask=NULL; break; } argv++; @@ -312,6 +324,10 @@ static int handle_wowlan_enable(struct nl80211_state *state, nla_nest_end(msg, wowlan); err = 0; nla_put_failure: + if(pat) + free(pat); + if(mask) + free(mask); nlmsg_free(patterns); return err; }