cpukit/libnetworking/rtems/rtems_dhcp.c: Fix leak on realloc failure for dhcp_hostname.

Closes #2405.
This commit is contained in:
Martin Galvan
2015-09-02 16:54:25 -05:00
committed by Joel Sherrill
parent 1491f6948e
commit c62129c5bc

View File

@@ -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: