diff mbox series

[iproute2] ipstats: fix message reporting error

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

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Andrea Claudi May 29, 2023, 4:59 p.m. UTC
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(-)

Comments

patchwork-bot+netdevbpf@kernel.org May 30, 2023, 7:30 p.m. UTC | #1
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 mbox series

Patch

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);