]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ipstats: fix message reporting error
authorAndrea Claudi <aclaudi@redhat.com>
Mon, 29 May 2023 16:59:15 +0000 (18:59 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Tue, 30 May 2023 19:24:32 +0000 (12:24 -0700)
strerror() accepts any integer as arguments, but returns meaningful
error descriptions only for positive integers.

ipstats code uses strerror on a code path where either err is 0 or
-ENOMEM, thus resulting in a useless error message.

Fix this using errno and moving the error printing closer to the only
function populating it in this code path.

Fixes: df0b2c6d0098 ("ipstats: Add a shell of "show" command")
Signed-off-by: Andrea Claudi <aclaudi@redhat.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
ip/ipstats.c

index dadded14cd654149b2152bae5e540d2e0d75c67f..3f94ff1eb0a68322e925e354c03b1882f246d25b 100644 (file)
@@ -88,8 +88,11 @@ ipstats_stat_show_attrs_alloc_tb(struct ipstats_stat_show_attrs *attrs,
                return 0;
 
        attrs->tbs[group] = calloc(ifla_max + 1, sizeof(*attrs->tbs[group]));
-       if (attrs->tbs[group] == NULL)
-               return -ENOMEM;
+       if (attrs->tbs[group] == NULL) {
+               fprintf(stderr, "Error parsing netlink answer: %s\n",
+                       strerror(errno));
+               return -errno;
+       }
 
        if (group == 0)
                err = parse_rtattr(attrs->tbs[group], ifla_max,
@@ -755,11 +758,8 @@ ipstats_process_ifsm(struct nlmsghdr *answer,
        }
 
        err = ipstats_stat_show_attrs_alloc_tb(&show_attrs, 0);
-       if (err != 0) {
-               fprintf(stderr, "Error parsing netlink answer: %s\n",
-                       strerror(err));
+       if (err)
                return err;
-       }
 
        dev = ll_index_to_name(show_attrs.ifsm->ifindex);