]> git.proxmox.com Git - mirror_frr.git/commitdiff
*: fix gcc-8 format-overflow warnings
authorDavid Lamparter <equinox@diac24.net>
Sat, 18 Aug 2018 02:33:38 +0000 (04:33 +0200)
committerDavid Lamparter <equinox@opensourcerouting.org>
Tue, 21 Aug 2018 19:05:09 +0000 (21:05 +0200)
e.g.
pimd/pim_oil.c: In function ‘pim_channel_oil_dump’:
pimd/pim_oil.c:51:19: error: ‘%d’ directive writing between 1 and 11 bytes into a region of size 10 [-Werror=format-overflow=]

Build on gcc-8.2.0 is warning-free after this patch.

Signed-off-by: David Lamparter <equinox@diac24.net>
bgpd/bgp_flowspec.c
pimd/pim_cmd.c
pimd/pim_oil.c

index 6695596c6f6b372906f7ffecceb7b0a7ae5fad89..e29508bf3680d9e946bb77db9b40cc593a947386 100644 (file)
@@ -148,7 +148,7 @@ int bgp_nlri_parse_flowspec(struct peer *peer, struct attr *attr,
 
                if (BGP_DEBUG(flowspec, FLOWSPEC)) {
                        char return_string[BGP_FLOWSPEC_NLRI_STRING_MAX];
-                       char local_string[BGP_FLOWSPEC_NLRI_STRING_MAX * 2];
+                       char local_string[BGP_FLOWSPEC_NLRI_STRING_MAX*2+16];
                        char ec_string[BGP_FLOWSPEC_NLRI_STRING_MAX];
                        char *s = NULL;
 
index 7c45ce261a48ae779711236bd374d4c9d2f67c1b..611d8d36811af5b631300f324e955add2458234a 100644 (file)
@@ -323,8 +323,8 @@ static void pim_show_assert_winner_metric_helper(struct vty *vty,
        char addr_str[INET_ADDRSTRLEN];
        struct pim_assert_metric *am;
        struct in_addr ifaddr;
-       char pref_str[5];
-       char metr_str[7];
+       char pref_str[16];
+       char metr_str[16];
 
        ifaddr = pim_ifp->primary_address;
 
index f0f336fb7308ccbfb02330fa8f31235d313b93ef..a0debc0c78f86a0994f9c751fe96c872005714f3 100644 (file)
 
 char *pim_channel_oil_dump(struct channel_oil *c_oil, char *buf, size_t size)
 {
+       char *out;
        struct prefix_sg sg;
        int i;
 
        sg.src = c_oil->oil.mfcc_origin;
        sg.grp = c_oil->oil.mfcc_mcastgrp;
-       sprintf(buf, "%s IIF: %d, OIFS: ", pim_str_sg_dump(&sg),
-               c_oil->oil.mfcc_parent);
+       snprintf(buf, size, "%s IIF: %d, OIFS: ", pim_str_sg_dump(&sg),
+                c_oil->oil.mfcc_parent);
 
+       out = buf + strlen(buf);
        for (i = 0; i < MAXVIFS; i++) {
                if (c_oil->oil.mfcc_ttls[i] != 0) {
-                       char buf1[10];
-                       sprintf(buf1, "%d ", i);
-                       strcat(buf, buf1);
+                       snprintf(out, buf + size - out, "%d ", i);
+                       out += strlen(out);
                }
        }