From patchwork Wed Feb 6 18:44:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 1037699 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=networkplumber.org Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=networkplumber-org.20150623.gappssmtp.com header.i=@networkplumber-org.20150623.gappssmtp.com header.b="pWCR6RcN"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43vr2s6jL6z9s4Z for ; Thu, 7 Feb 2019 05:44:37 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726782AbfBFSog (ORCPT ); Wed, 6 Feb 2019 13:44:36 -0500 Received: from mail-pl1-f196.google.com ([209.85.214.196]:44945 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725928AbfBFSof (ORCPT ); Wed, 6 Feb 2019 13:44:35 -0500 Received: by mail-pl1-f196.google.com with SMTP id p4so3478163plq.11 for ; Wed, 06 Feb 2019 10:44:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=KVNZqzpV824X7HZl6q5hkE9/3R0+Np0ZXL8AefJRF50=; b=pWCR6RcNOsDJYU0FhDPBjXR3FuLQ09MmwMmp1chx2BPXDjKLaVLGHYZHuV07C4tVMU AGiY2wiT2tDkxsIBYtQ47OoVotxGCpk10Nqfh047STlbwMpEa5eQzXH1GZ7qgTUBFBPn lduYvvWLhQprGkvQbwOj3oA/vSJN9WzkqwoahZHtYuMNWYHFGZoxL87FUstSmx6AKZzt bFWMu+BvuPS/6QNAUCFzM7BdSBbwjqTWXkUQsCWGcYiB5/2oBJ4oRq7sgc656pb5/nen dJf26gkNCqtsvXjCoOvEedxu8uA1nAO8zU7pFWzG1yXtY8ycL5kWZ3AzS5JkGmat7GW9 U9rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=KVNZqzpV824X7HZl6q5hkE9/3R0+Np0ZXL8AefJRF50=; b=QgScBB5369HnudQm2+w23WNyde6qy1ksvHjLrkAo41ZoeKVCak0SiK/TrpVRyVrQDz mgfBgw2/Weeot26G5vdw2hyLvB9oDpL0mii6q2h+KiMlub1/gdjOeZeNaP7pHheS+yiG T2ZJ27pFqOnkp+Jj6kUmLFhniXMrMZ+hlRTu4FrxN/zlG0oc9nPLVaz7kHNGiS2ODyzB AJ+wEzdrpERGAetwOPUZ6uEDryUYxmHXh7Ex+H6sLex8j2EsTfgLaXFnLgPnqoz7Ekb6 PaxkntQXvzDgE2zopcfKzpoHf3S1JWiEldChznZXPLBHg46E1zVJqGVg60uQFZwLGDYJ ovSA== X-Gm-Message-State: AHQUAuYNGGtotEZzhejYkxPKal+luSevQmreCRS9CTq5bbO1zwZXiATD XViR1SDEBE9umZKXNe2lizyUYQk5AZk= X-Google-Smtp-Source: AHgI3IY5uf7nYk6054VX93o9UUHb+5RtLatsDm3zkASxT6r8H9pqCwRvsz7YSIaJTEu3TxH/QTCaNg== X-Received: by 2002:a17:902:9887:: with SMTP id s7mr11843637plp.199.1549478674699; Wed, 06 Feb 2019 10:44:34 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id o189sm10640861pfg.117.2019.02.06.10.44.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 10:44:33 -0800 (PST) From: Stephen Hemminger To: netdev@vger.kernel.org Cc: Stephen Hemminger Subject: [PATCH iproute2] tc: fix memory leak in error path Date: Wed, 6 Feb 2019 10:44:08 -0800 Message-Id: <20190206184407.17300-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If value passed to parse_percent was not valid, it would leak the dynamic allocation from sscanf. Fixes: 927e3cfb52b5 ("tc: B.W limits can now be specified in %.") Signed-off-by: Stephen Hemminger --- tc/tc_util.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tc/tc_util.c b/tc/tc_util.c index ab717890bb2a..1377b536e72f 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -195,7 +195,7 @@ static int parse_percent_rate(char *rate, const char *str, const char *dev) long dev_mbit; int ret; double perc, rate_mbit; - char *str_perc; + char *str_perc = NULL; if (!dev[0]) { fprintf(stderr, "No device specified; specify device to rate limit by percentage\n"); @@ -230,6 +230,7 @@ static int parse_percent_rate(char *rate, const char *str, const char *dev) return 0; malf: + free(str_perc); fprintf(stderr, "Specified rate value could not be read or is malformed\n"); return -1; }