diff --git a/lib/fib_lookup/lookup.c b/lib/fib_lookup/lookup.c index 6fe8dae..3d07317 100644 --- a/lib/fib_lookup/lookup.c +++ b/lib/fib_lookup/lookup.c @@ -124,7 +124,7 @@ errout: static void result_dump_line(struct nl_object *obj, struct nl_dump_params *p) { struct flnl_result *res = (struct flnl_result *) obj; - char buf[128]; + char buf[256]; nl_dump_line(p, "table %s prefixlen %u next-hop-selector %u\n", rtnl_route_table2str(res->fr_table_id, buf, sizeof(buf)), @@ -133,7 +133,7 @@ static void result_dump_line(struct nl_object *obj, struct nl_dump_params *p) nl_rtntype2str(res->fr_type, buf, sizeof(buf))); nl_dump(p, "scope %s error %s (%d)\n", rtnl_scope2str(res->fr_scope, buf, sizeof(buf)), - strerror(-res->fr_error), res->fr_error); + strerror_r(-res->fr_error, buf, sizeof(buf)), res->fr_error); } static void result_dump_details(struct nl_object *obj, struct nl_dump_params *p) diff --git a/lib/handlers.c b/lib/handlers.c index ee1376b..e52c850 100644 --- a/lib/handlers.c +++ b/lib/handlers.c @@ -79,9 +79,10 @@ static int nl_error_handler_verbose(struct sockaddr_nl *who, struct nlmsgerr *e, void *arg) { FILE *ofd = arg ? arg : stderr; + char buf[256]; fprintf(ofd, "-- Error received: %s\n-- Original message: ", - strerror(-e->error)); + strerror_r(-e->error, buf, sizeof(buf))); print_header_content(ofd, &e->msg); fprintf(ofd, "\n"); diff --git a/lib/msg.c b/lib/msg.c index 8198ded..62d9683 100644 --- a/lib/msg.c +++ b/lib/msg.c @@ -879,10 +879,11 @@ void nl_msg_dump(struct nl_msg *msg, FILE *ofd) hdr->nlmsg_len >= nlmsg_msg_size(sizeof(struct nlmsgerr))) { struct nl_msg *errmsg; struct nlmsgerr *err = nlmsg_data(hdr); + char buf[256]; fprintf(ofd, " [ERRORMSG] %zu octets\n", sizeof(*err)); fprintf(ofd, " .error = %d \"%s\"\n", err->error, - strerror(-err->error)); + strerror_r(-err->error, buf, sizeof(buf))); fprintf(ofd, " [ORIGINAL MESSAGE] %zu octets\n", sizeof(*hdr)); errmsg = nlmsg_inherit(&err->msg); diff --git a/lib/route/route_obj.c b/lib/route/route_obj.c index 8f1e515..795047f 100644 --- a/lib/route/route_obj.c +++ b/lib/route/route_obj.c @@ -208,7 +208,7 @@ static void route_dump_details(struct nl_object *a, struct nl_dump_params *p) { struct rtnl_route *r = (struct rtnl_route *) a; struct nl_cache *link_cache; - char buf[128]; + char buf[256]; int i; link_cache = nl_cache_mngt_require_safe("route/link"); @@ -259,7 +259,7 @@ static void route_dump_details(struct nl_object *a, struct nl_dump_params *p) if ((r->ce_mask & ROUTE_ATTR_CACHEINFO) && r->rt_cacheinfo.rtci_error) { nl_dump_line(p, " cacheinfo error %d (%s)\n", r->rt_cacheinfo.rtci_error, - strerror(-r->rt_cacheinfo.rtci_error)); + strerror_r(-r->rt_cacheinfo.rtci_error, buf, sizeof(buf))); } if (r->ce_mask & ROUTE_ATTR_METRICS) { diff --git a/src/lib/utils.c b/src/lib/utils.c index 78ad260..e5eacde 100644 --- a/src/lib/utils.c +++ b/src/lib/utils.c @@ -70,6 +70,7 @@ void nl_cli_print_version(void) void nl_cli_fatal(int err, const char *fmt, ...) { va_list ap; + char buf[256]; fprintf(stderr, "Error: "); @@ -79,7 +80,7 @@ void nl_cli_fatal(int err, const char *fmt, ...) va_end(ap); fprintf(stderr, "\n"); } else - fprintf(stderr, "%s\n", strerror(err)); + fprintf(stderr, "%s\n", strerror_r(err, buf, sizeof(buf))); exit(abs(err)); }