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=-12.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,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 14A03C47095 for ; Wed, 7 Oct 2020 13:57:29 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A52B420870 for ; Wed, 7 Oct 2020 13:57:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A52B420870 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.3530.10114 (Exim 4.92) (envelope-from ) id 1kQ9wU-0002F3-TU; Wed, 07 Oct 2020 13:57:18 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 3530.10114; Wed, 07 Oct 2020 13:57:18 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQ9wU-0002Ew-Pw; Wed, 07 Oct 2020 13:57:18 +0000 Received: by outflank-mailman (input) for mailman id 3530; Wed, 07 Oct 2020 13:57:17 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQ9wT-0002Ej-DI for xen-devel@lists.xenproject.org; Wed, 07 Oct 2020 13:57:17 +0000 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 023cacf1-305f-497b-b5ec-5c8e5d83e1df; Wed, 07 Oct 2020 13:57:16 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F21721063; Wed, 7 Oct 2020 06:57:15 -0700 (PDT) Received: from e109506-lin.cambridge.arm.com (e109506-lin.cambridge.arm.com [10.1.198.23]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4D2833F66B; Wed, 7 Oct 2020 06:57:15 -0700 (PDT) Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQ9wT-0002Ej-DI for xen-devel@lists.xenproject.org; Wed, 07 Oct 2020 13:57:17 +0000 X-Inumbo-ID: 023cacf1-305f-497b-b5ec-5c8e5d83e1df Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 023cacf1-305f-497b-b5ec-5c8e5d83e1df; Wed, 07 Oct 2020 13:57:16 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F21721063; Wed, 7 Oct 2020 06:57:15 -0700 (PDT) Received: from e109506-lin.cambridge.arm.com (e109506-lin.cambridge.arm.com [10.1.198.23]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4D2833F66B; Wed, 7 Oct 2020 06:57:15 -0700 (PDT) From: Bertrand Marquis To: xen-devel@lists.xenproject.org Cc: jgross@suse.com, Ian Jackson , Wei Liu Subject: [PATCH v3 1/2] tools/libs/stat: use memcpy instead of strncpy in getBridge Date: Wed, 7 Oct 2020 14:57:01 +0100 Message-Id: <4ecb03b40b0da6d480e95af1da8289501a3ede0a.1602078276.git.bertrand.marquis@arm.com> X-Mailer: git-send-email 2.17.1 Use memcpy in getBridge to prevent gcc warnings about truncated strings. We know that we might truncate it, so the gcc warning here is wrong. Revert previous change changing buffer sizes as bigger buffers are not needed. Signed-off-by: Bertrand Marquis --- Changes in v3: Do a memset 0 on destination buffer and use MIN between string length and resultLen - 1. Changes in v2: Use MIN between string length of de->d_name and resultLen to copy only the minimum size required and prevent crossing to from an unallocated space. --- tools/libs/stat/xenstat_linux.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/libs/stat/xenstat_linux.c b/tools/libs/stat/xenstat_linux.c index d2ee6fda64..e0d242e1bc 100644 --- a/tools/libs/stat/xenstat_linux.c +++ b/tools/libs/stat/xenstat_linux.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "xenstat_priv.h" @@ -78,8 +79,14 @@ static void getBridge(char *excludeName, char *result, size_t resultLen) sprintf(tmp, "/sys/class/net/%s/bridge", de->d_name); if (access(tmp, F_OK) == 0) { - strncpy(result, de->d_name, resultLen); - result[resultLen - 1] = 0; + /* + * Do not use strncpy to prevent compiler warning with + * gcc >= 10.0 + * If de->d_name is longer then resultLen we truncate it + */ + memset(result, 0, resultLen); + memcpy(result, de->d_name, MIN(strnlen(de->d_name, + NAME_MAX),resultLen - 1)); } } } @@ -264,7 +271,7 @@ int xenstat_collect_networks(xenstat_node * node) { /* Helper variables for parseNetDevLine() function defined above */ int i; - char line[512] = { 0 }, iface[16] = { 0 }, devBridge[256] = { 0 }, devNoBridge[257] = { 0 }; + char line[512] = { 0 }, iface[16] = { 0 }, devBridge[16] = { 0 }, devNoBridge[17] = { 0 }; unsigned long long rxBytes, rxPackets, rxErrs, rxDrops, txBytes, txPackets, txErrs, txDrops; struct priv_data *priv = get_priv_data(node->handle); -- 2.17.1