From: Denis Kirjanov Date: Fri, 26 Jan 2024 10:08:55 +0000 (-0500) Subject: ifstat: make load_info() more verbose on error X-Git-Tag: v6.8.0~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ddcc9329352a2158241cb21fa11df21ca23759d6;p=thirdparty%2Fiproute2.git ifstat: make load_info() more verbose on error convert frprintf calls to perror() so the caller can see the reason of an error Signed-off-by: Denis Kirjanov Signed-off-by: Stephen Hemminger --- diff --git a/misc/ifstat.c b/misc/ifstat.c index f6f9ba502..721f49149 100644 --- a/misc/ifstat.c +++ b/misc/ifstat.c @@ -117,16 +117,20 @@ static int get_nlmsg_extended(struct nlmsghdr *m, void *arg) return 0; len -= NLMSG_LENGTH(sizeof(*ifsm)); - if (len < 0) + if (len < 0) { + errno = EINVAL; return -1; + } parse_rtattr(tb, IFLA_STATS_MAX, IFLA_STATS_RTA(ifsm), len); if (tb[filter_type] == NULL) return 0; n = malloc(sizeof(*n)); - if (!n) - abort(); + if (!n) { + errno = ENOMEM; + return -1; + } n->ifindex = ifsm->ifindex; n->name = strdup(ll_index_to_name(ifsm->ifindex)); @@ -161,8 +165,10 @@ static int get_nlmsg(struct nlmsghdr *m, void *arg) return 0; len -= NLMSG_LENGTH(sizeof(*ifi)); - if (len < 0) + if (len < 0) { + errno = EINVAL; return -1; + } if (!(ifi->ifi_flags&IFF_UP)) return 0; @@ -172,8 +178,10 @@ static int get_nlmsg(struct nlmsghdr *m, void *arg) return 0; n = malloc(sizeof(*n)); - if (!n) - abort(); + if (!n) { + errno = ENOMEM; + return -1; + } n->ifindex = ifi->ifi_index; n->name = strdup(RTA_DATA(tb[IFLA_IFNAME])); memcpy(&n->ival, RTA_DATA(tb[IFLA_STATS]), sizeof(n->ival)); @@ -204,7 +212,7 @@ static void load_info(void) } if (rtnl_dump_filter(&rth, get_nlmsg_extended, NULL) < 0) { - fprintf(stderr, "Dump terminated\n"); + perror("Dump terminated\n"); exit(1); } } else { @@ -214,7 +222,7 @@ static void load_info(void) } if (rtnl_dump_filter(&rth, get_nlmsg, NULL) < 0) { - fprintf(stderr, "Dump terminated\n"); + perror("Dump terminated\n"); exit(1); } }