diff options
Diffstat (limited to 'cpukit/libnetworking/rtems/rtems_dhcp.c')
-rw-r--r-- | cpukit/libnetworking/rtems/rtems_dhcp.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/cpukit/libnetworking/rtems/rtems_dhcp.c b/cpukit/libnetworking/rtems/rtems_dhcp.c index c938ee028f..87be238ddb 100644 --- a/cpukit/libnetworking/rtems/rtems_dhcp.c +++ b/cpukit/libnetworking/rtems/rtems_dhcp.c @@ -394,15 +394,23 @@ process_options (unsigned char *optbuf, int optbufSize) printf ("dhcpc: hostname >= %d bytes\n", MAXHOSTNAMELEN); len = MAXHOSTNAMELEN-1; } - if (sethostname (p, len) < 0) + if (sethostname (p, len) < 0) { printf ("dhcpc: can't set host name"); + } if (dhcp_hostname != NULL) { - dhcp_hostname = realloc (dhcp_hostname, len); - strncpy (dhcp_hostname, p, len); - } - else + char *tmp = realloc (dhcp_hostname, len); + if (tmp != NULL) { + dhcp_hostname = tmp; + strncpy (dhcp_hostname, p, len); + } else { /* realloc failed */ + printf ("dhcpc: realloc failed (%s:%d)", __FILE__, __LINE__); + free (dhcp_hostname); + dhcp_hostname = NULL; + } + } else { /* dhcp_hostname == NULL */ dhcp_hostname = strndup (p, len); + } break; case 7: |