From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B346C282C2 for ; Wed, 6 Feb 2019 18:53:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1A038206DD for ; Wed, 6 Feb 2019 18:53:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=networkplumber-org.20150623.gappssmtp.com header.i=@networkplumber-org.20150623.gappssmtp.com header.b="1ceelf+f" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727948AbfBFSvW (ORCPT ); Wed, 6 Feb 2019 13:51:22 -0500 Received: from mail-pg1-f194.google.com ([209.85.215.194]:35486 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726801AbfBFSvV (ORCPT ); Wed, 6 Feb 2019 13:51:21 -0500 Received: by mail-pg1-f194.google.com with SMTP id s198so3300384pgs.2 for ; Wed, 06 Feb 2019 10:51:20 -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=dMCDmZdgKFwI1cNIten8jl5gqX0W7HzL4O8Nm6mkPWs=; b=1ceelf+fqodi9xRCGpTj5xd+MpUON05PWtLT+C8gikD/WNqDz2B7m9UseEFn2C7ULS ky2BfPHoSPgie2rq3/LR4tEb/iUrj5La/OJJAUpdquSftX4Hu9GnxOMI2s6ihc93P2Dq WEMIoS5+JJB330G6y/eM5VrSJAEnGJMdT88raUrA4JK2Vp6VYtZYM6KSAakOs/yXTm93 vj6i3J2yRnhe/JEPc6J/a/hiizBjxI+cN6LhCvCpaPsOrj38g7cYbJYGgkHmv37q4uun RkB6juLRuGzeuSdRXAwlkgMHjtwXK2F/2d+FKTstGxtT4fgCIN0UEtXu/lT0etQbBMo4 v2gA== 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=dMCDmZdgKFwI1cNIten8jl5gqX0W7HzL4O8Nm6mkPWs=; b=hUvnOPbxZcMNx5I8WJRe/Yv297J01oGuZWKI4eLWhqbAkGt1plAXH+gqUuxIQ14vbE 7RieQIaKQ8A46kJsRZN1WLD2y5BK3EMXwIh+hJLMRKT031hXj9k2jqaDdNjpWBZwD1at nTa4vjosR+6Ct4myefjDjGCjQVvxHu1Dk5pruGTDFDDzWk5g43XmVh1oirFbjgMk7WKJ uZZ70ZJcFCzZ9zc5UGDEzropAMUqBXFWhgBVFc8rCJvFLOxmw/rwgw0/eUXs1iJ1dVDn Wo7EOcaJc40UI1s1z2sM5IkGn2iIMLxBGqs8QYuJrqiYZJyo660buFZrRmkR0WusRvoh rbpg== X-Gm-Message-State: AHQUAuZs7eI/QkhKZ1m5ude8fZTrlwg18IfrsPJ/GX/2YaDfIQaU3trD FfuUmqxguq4WJb7qQF5FwAfxd+A1knA= X-Google-Smtp-Source: AHgI3IZspPJv0OTLeggrI+mOBgiO2rCff0BEdyjcGjbOKAs+VU1eMm0SWarrXJ/590yYZdXERaxq4w== X-Received: by 2002:aa7:8a44:: with SMTP id n4mr5643126pfa.159.1549479080006; Wed, 06 Feb 2019 10:51:20 -0800 (PST) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id c7sm11337163pfa.24.2019.02.06.10.51.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 10:51:19 -0800 (PST) From: Stephen Hemminger To: netdev@vger.kernel.org Cc: Stephen Hemminger Subject: [PATCH iproute2] tc: avoid problems with hard coded rate string length Date: Wed, 6 Feb 2019 10:51:02 -0800 Message-Id: <20190206185101.17430-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The parse_percent_rate function assumed the buffer was 20 characters. Better to pass length in case the size ever changes. Signed-off-by: Stephen Hemminger --- tc/tc_util.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tc/tc_util.c b/tc/tc_util.c index 1377b536e72f..4e289ae9c2ad 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -190,7 +190,8 @@ static const struct rate_suffix { { NULL } }; -static int parse_percent_rate(char *rate, const char *str, const char *dev) +static int parse_percent_rate(char *rate, size_t len, + const char *str, const char *dev) { long dev_mbit; int ret; @@ -221,8 +222,8 @@ static int parse_percent_rate(char *rate, const char *str, const char *dev) rate_mbit = perc * dev_mbit; - ret = snprintf(rate, 20, "%lf", rate_mbit); - if (ret <= 0 || ret >= 20) { + ret = snprintf(rate, len, "%lf", rate_mbit); + if (ret <= 0 || ret >= len) { fprintf(stderr, "Unable to parse calculated rate\n"); return -1; } @@ -239,7 +240,7 @@ int get_percent_rate(unsigned int *rate, const char *str, const char *dev) { char r_str[20]; - if (parse_percent_rate(r_str, str, dev)) + if (parse_percent_rate(r_str, sizeof(r_str), str, dev)) return -1; return get_rate(rate, r_str); @@ -249,7 +250,7 @@ int get_percent_rate64(__u64 *rate, const char *str, const char *dev) { char r_str[20]; - if (parse_percent_rate(r_str, str, dev)) + if (parse_percent_rate(r_str, sizeof(r_str), str, dev)) return -1; return get_rate64(rate, r_str); -- 2.20.1