Don't lose an allocated pointer if realloc() fails.

Free it instead.
Pointed out by: Theo de Raadt
This commit is contained in:
brian 1998-08-17 06:42:40 +00:00
parent 49f35df526
commit ab64c29a02

View File

@ -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) {