Message ID | e8875ce96124d1f30acf6a237d0a67f2194d13a6.1685379264.git.aclaudi@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 995096d946cbe1b8b8198b93fa3fc67240f3dcb6 |
Delegated to: | Stephen Hemminger |
Headers | show |
Series | [iproute2] ipstats: fix message reporting error | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
Hello: This patch was applied to iproute2/iproute2.git (main) by Stephen Hemminger <stephen@networkplumber.org>: On Mon, 29 May 2023 18:59:15 +0200 you wrote: > 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. > > [...] Here is the summary with links: - [iproute2] ipstats: fix message reporting error https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=995096d946cb You are awesome, thank you!
diff --git a/ip/ipstats.c b/ip/ipstats.c index dadded14..3f94ff1e 100644 --- a/ip/ipstats.c +++ b/ip/ipstats.c @@ -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);
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> --- ip/ipstats.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)