--- libnl-1.1.4.orig/lib/fib_lookup/lookup.c
+++ libnl-1.1.4/lib/fib_lookup/lookup.c
@@ -124,7 +124,7 @@
 static int result_dump_brief(struct nl_object *obj, struct nl_dump_params *p)
 {
 	struct flnl_result *res = (struct flnl_result *) obj;
-	char buf[256];
+	char buf[256], buf2[256];
 	int line = 1;
 
 	dp_dump(p, "table %s prefixlen %u next-hop-selector %u\n",
@@ -132,9 +132,10 @@
 		res->fr_prefixlen, res->fr_nh_sel);
 	dp_dump_line(p, line++, "type %s ",
 		     nl_rtntype2str(res->fr_type, buf, sizeof(buf)));
+	strerror_r(-res->fr_error, buf2, sizeof(buf2));
 	dp_dump(p, "scope %s error %s (%d)\n",
 		rtnl_scope2str(res->fr_scope, buf, sizeof(buf)),
-		strerror_r(-res->fr_error, buf, sizeof(buf)), res->fr_error);
+		buf2, res->fr_error);
 
 	return line;
 }
--- libnl-1.1.4.orig/lib/handlers.c
+++ libnl-1.1.4/lib/handlers.c
@@ -136,8 +136,8 @@
 	FILE *ofd = arg ? arg : stderr;
 	char buf[256];
 
-	fprintf(ofd, "-- Error received: %s\n-- Original message: ",
-		strerror_r(-e->error, buf, sizeof(buf)));
+	strerror_r(-e->error, buf, sizeof(buf));
+	fprintf(ofd, "-- Error received: %s\n-- Original message: ", buf);
 	print_header_content(ofd, &e->msg);
 	fprintf(ofd, "\n");
 
--- libnl-1.1.4.orig/lib/msg.c
+++ libnl-1.1.4/lib/msg.c
@@ -961,9 +961,9 @@
 		struct nlmsgerr *err = nlmsg_data(hdr);
 		char buf[256];
 
+		strerror_r(-err->error, buf, sizeof(buf));
 		fprintf(ofd, "  [ERRORMSG] %Zu octets\n", sizeof(*err));
-		fprintf(ofd, "    .error = %d \"%s\"\n", err->error,
-			strerror_r(-err->error, buf, sizeof(buf)));
+		fprintf(ofd, "    .error = %d \"%s\"\n", err->error, buf);
 		fprintf(ofd, "  [ORIGINAL MESSAGE] %Zu octets\n", sizeof(*hdr));
 
 		errmsg = nlmsg_inherit(&err->msg);
