diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-18 11:15:53 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-31 13:18:48 +0100 |
commit | dfc416ef47afc67a0dca03fef4749e43d0e9f37c (patch) | |
tree | 6ac363eda5c712b9d3ffd28e2db349c795d2131f /freebsd/sbin/route | |
parent | ROUTE(8): Add and use context (diff) | |
download | rtems-libbsd-dfc416ef47afc67a0dca03fef4749e43d0e9f37c.tar.bz2 |
ROUTE(8): Free dynamic memory
Diffstat (limited to 'freebsd/sbin/route')
-rw-r--r-- | freebsd/sbin/route/route.c | 6 |
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 |