From ab64c29a02182ed0b56085a9d7e5956e425a3fe4 Mon Sep 17 00:00:00 2001 From: brian Date: Mon, 17 Aug 1998 06:42:40 +0000 Subject: Don't lose an allocated pointer if realloc() fails. Free it instead. Pointed out by: Theo de Raadt --- usr.sbin/ppp/route.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'usr.sbin') diff --git a/usr.sbin/ppp/route.c b/usr.sbin/ppp/route.c index 0f7f019..a80204d 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) { -- cgit v1.1