diff options
Diffstat (limited to 'usr.sbin/ppp/route.c')
-rw-r--r-- | usr.sbin/ppp/route.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/usr.sbin/ppp/route.c b/usr.sbin/ppp/route.c index 0c29785c70c..e7e16487307 100644 --- a/usr.sbin/ppp/route.c +++ b/usr.sbin/ppp/route.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: route.c,v 1.18 1998/06/27 12:06:48 brian Exp $ + * $Id: route.c,v 1.19 1998/08/17 06:45:38 brian Exp $ * */ @@ -345,17 +345,22 @@ Index2Nam(int idx) dl = (struct sockaddr_dl *)(ifm + 1); if (ifm->ifm_index > 0) { if (ifm->ifm_index > have) { + char **newifs; + had = have; have = ifm->ifm_index + 5; if (had) - ifs = (char **)realloc(ifs, sizeof(char *) * have); + newifs = (char **)realloc(ifs, sizeof(char *) * have); else - ifs = (char **)malloc(sizeof(char *) * have); - if (!ifs) { + newifs = (char **)malloc(sizeof(char *) * have); + if (!newifs) { LogPrintf(LogDEBUG, "Index2Nam: %s\n", strerror(errno)); nifs = 0; + if (ifs) + free(ifs); return "???"; } + ifs = newifs; memset(ifs + had, '\0', sizeof(char *) * (have - had)); } if (ifs[ifm->ifm_index-1] == NULL) { |