+diff -up libnl-1.0-pre8/include/netlink-local.h.use-vasprintf-retval libnl-1.0-pre8/include/netlink-local.h
+--- libnl-1.0-pre8/include/netlink-local.h.use-vasprintf-retval 2007-12-03 14:13:52.000000000 -0500
++++ libnl-1.0-pre8/include/netlink-local.h 2007-12-03 14:15:26.000000000 -0500
+@@ -273,13 +273,18 @@ static inline void __dp_dump(struct nl_d
+ vfprintf(parms->dp_fd, fmt, args);
+ else if (parms->dp_buf || parms->dp_cb) {
+ char *buf = NULL;
+- vasprintf(&buf, fmt, args);
+- if (parms->dp_cb)
+- parms->dp_cb(parms, buf);
+- else
+- strncat(parms->dp_buf, buf,
+- parms->dp_buflen - strlen(parms->dp_buf) - 1);
+- free(buf);
++ int ret;
++ ret = vasprintf(&buf, fmt, args);
++ if (ret >= 0) {
++ if (parms->dp_cb)
++ parms->dp_cb(parms, buf);
++ else
++ strncat(parms->dp_buf, buf,
++ parms->dp_buflen - strlen(parms->dp_buf) - 1);
++ free(buf);
++ } else {
++ // FIXME: indicate error somehow
++ }
+ }
+ }
+