summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBertrand Marquis <bertrand.marquis@arm.com>2020-10-07 14:57:01 +0100
committerWei Liu <wl@xen.org>2020-10-16 13:23:34 +0000
commit40fe714ca4245a9716264fcb3ee8df42c3650cf6 (patch)
tree41f03fe050730f089fbb8b482485a656a0ac00c4
parenta7952a320c1e202a218702bfdb14f75132f04894 (diff)
tools/libs/stat: use memcpy instead of strncpy in getBridge
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 <bertrand.marquis@arm.com> Acked-by: Wei Liu <wl@xen.org>
-rw-r--r--tools/libs/stat/xenstat_linux.c13
1 files 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 <string.h>
#include <unistd.h>
#include <regex.h>
+#include <xen-tools/libs.h>
#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);