1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-13 10:02:38 +00:00

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

Free it instead.
Pointed out by: Theo de Raadt
This commit is contained in:
Brian Somers 1998-08-17 06:42:40 +00:00
parent 44ab8b53f2
commit fc254be9bd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=38381

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