diff --git a/usr.sbin/ppp/route.c b/usr.sbin/ppp/route.c index 0f7f01934cc7..a80204d1be25 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.51 1998/06/27 23:48:53 brian Exp $ + * $Id: route.c,v 1.52 1998/07/28 21:54:54 brian Exp $ * */ @@ -236,17 +236,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) { log_Printf(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) {