summaryrefslogtreecommitdiffstats
path: root/freebsd/sbin/route
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-18 11:15:53 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-31 13:18:48 +0100
commitdfc416ef47afc67a0dca03fef4749e43d0e9f37c (patch)
tree6ac363eda5c712b9d3ffd28e2db349c795d2131f /freebsd/sbin/route
parentROUTE(8): Add and use context (diff)
downloadrtems-libbsd-dfc416ef47afc67a0dca03fef4749e43d0e9f37c.tar.bz2
ROUTE(8): Free dynamic memory
Diffstat (limited to 'freebsd/sbin/route')
-rw-r--r--freebsd/sbin/route/route.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/freebsd/sbin/route/route.c b/freebsd/sbin/route/route.c
index 81aaf632..714165b6 100644
--- a/freebsd/sbin/route/route.c
+++ b/freebsd/sbin/route/route.c
@@ -291,7 +291,7 @@ retry:
mib[5] = 0; /* no flags */
if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
err(EX_OSERR, "route-sysctl-estimate");
- if ((buf = malloc(needed)) == NULL)
+ if ((buf = malloc(needed)) == NULL && needed != 0)
errx(EX_OSERR, "malloc failed");
if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) {
if (errno == ENOMEM && count++ < 10) {
@@ -346,6 +346,7 @@ retry:
(void) printf("done\n");
}
}
+ free(buf);
}
const char *
@@ -1193,7 +1194,7 @@ retry2:
mib[5] = 0; /* no flags */
if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
err(EX_OSERR, "route-sysctl-estimate");
- if ((buf = malloc(needed)) == NULL)
+ if ((buf = malloc(needed)) == NULL && needed != 0)
errx(EX_OSERR, "malloc failed");
if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) {
if (errno == ENOMEM && count++ < 10) {
@@ -1209,6 +1210,7 @@ retry2:
rtm = (struct rt_msghdr *)next;
print_rtmsg(c, rtm, rtm->rtm_msglen);
}
+ free(buf);
}
void