forked from Imagelibrary/rtems
cpukit/libnetworking/rtems/rtems_dhcp.c: Fix leak on realloc failure for dhcp_hostname.
Closes #2405.
This commit is contained in:
committed by
Joel Sherrill
parent
1491f6948e
commit
c62129c5bc
@@ -394,15 +394,23 @@ process_options (unsigned char *optbuf, int optbufSize)
|
|||||||
printf ("dhcpc: hostname >= %d bytes\n", MAXHOSTNAMELEN);
|
printf ("dhcpc: hostname >= %d bytes\n", MAXHOSTNAMELEN);
|
||||||
len = MAXHOSTNAMELEN-1;
|
len = MAXHOSTNAMELEN-1;
|
||||||
}
|
}
|
||||||
if (sethostname (p, len) < 0)
|
if (sethostname (p, len) < 0) {
|
||||||
printf ("dhcpc: can't set host name");
|
printf ("dhcpc: can't set host name");
|
||||||
|
}
|
||||||
if (dhcp_hostname != NULL)
|
if (dhcp_hostname != NULL)
|
||||||
{
|
{
|
||||||
dhcp_hostname = realloc (dhcp_hostname, len);
|
char *tmp = realloc (dhcp_hostname, len);
|
||||||
|
if (tmp != NULL) {
|
||||||
|
dhcp_hostname = tmp;
|
||||||
strncpy (dhcp_hostname, p, len);
|
strncpy (dhcp_hostname, p, len);
|
||||||
|
} else { /* realloc failed */
|
||||||
|
printf ("dhcpc: realloc failed (%s:%d)", __FILE__, __LINE__);
|
||||||
|
free (dhcp_hostname);
|
||||||
|
dhcp_hostname = NULL;
|
||||||
}
|
}
|
||||||
else
|
} else { /* dhcp_hostname == NULL */
|
||||||
dhcp_hostname = strndup (p, len);
|
dhcp_hostname = strndup (p, len);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
|
|||||||
Reference in New Issue
Block a user