tools/libs/stat: fix broken build
authorJuergen Gross <jgross@suse.com>
Sat, 12 Sep 2020 13:08:36 +0000 (15:08 +0200)
committerIan Jackson <iwj@xenproject.org>
Mon, 9 Nov 2020 17:45:32 +0000 (17:45 +0000)
Making getBridge() static triggered a build error with some gcc versions:

error: 'strncpy' output may be truncated copying 15 bytes from a string of
length 255 [-Werror=stringop-truncation]

Fix that by using a buffer with 256 bytes instead.

Fixes: 6d0ec053907794 ("tools: split libxenstat into new tools/libs/stat directory")
Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Wei Liu <wl@xen.org>
(cherry picked from commit c8099e48c3dbb8c7399551a265756ecf354eece2)

tools/xenstat/libxenstat/src/xenstat_linux.c

index 7530349eeecff4eb864291b6b9afaec2442c7567..0274dc4d07b5f81a1ea6fcccd4dc4095c9c556ac 100644 (file)
@@ -78,7 +78,7 @@ 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 - 1);
+                                       strncpy(result, de->d_name, resultLen);
                                        result[resultLen - 1] = 0;
                                }
                }
@@ -264,7 +264,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[16] = { 0 }, devNoBridge[17] = { 0 };
+       char line[512] = { 0 }, iface[16] = { 0 }, devBridge[256] = { 0 }, devNoBridge[257] = { 0 };
        unsigned long long rxBytes, rxPackets, rxErrs, rxDrops, txBytes, txPackets, txErrs, txDrops;
 
        struct priv_data *priv = get_priv_data(node->handle);