[PATCH v2 5/5] cpukit/libnetworking/rtems/rtems_dhcp.c: Fix leak on realloc failure for dhcp_hostname.
Gedare Bloom
gedare at rtems.org
Thu Sep 3 15:20:39 UTC 2015
Joel,
Review/Commit these if happy.
Gedare
On Wed, Sep 2, 2015 at 5:54 PM, Martin Galvan
<martin.galvan at tallertechnologies.com> wrote:
> Closes #2405.
> ---
> cpukit/libnetworking/rtems/rtems_dhcp.c | 18 +++++++++++++-----
> 1 file changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/cpukit/libnetworking/rtems/rtems_dhcp.c b/cpukit/libnetworking/rtems/rtems_dhcp.c
> index c938ee0..87be238 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:
> --
> 2.5.1
>
More information about the devel
mailing list