From 7ac73e6ee2af1a0bcdcccf76344e60db558efe9a Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 20 Feb 2003 21:21:28 +0000 Subject: 2003-02-20 Till Straumann PR 351/networking * nfs/bootp_subr.c: Fix ridiculous leak in bootp and use strdup_bootp_realloc() everywhere for sake of consistency. --- cpukit/libnetworking/nfs/bootp_subr.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'cpukit/libnetworking/nfs/bootp_subr.c') diff --git a/cpukit/libnetworking/nfs/bootp_subr.c b/cpukit/libnetworking/nfs/bootp_subr.c index 706ab51a50..7328a21f2c 100644 --- a/cpukit/libnetworking/nfs/bootp_subr.c +++ b/cpukit/libnetworking/nfs/bootp_subr.c @@ -274,11 +274,13 @@ void *bootp_strdup_realloc(char *dst,const char *src) if (dst == NULL) { /* first allocation, simply use strdup */ - dst = strdup(src); + if (src) + dst = strdup(src); } else { /* already allocated, so use realloc/strcpy */ - len = strlen(src) + 1; + len = src ? strlen(src) + 1 : 0; + /* src == NULL tells us to effectively free dst */ dst = realloc(dst,len); if (dst != NULL) { strcpy(dst,src); @@ -945,7 +947,10 @@ bootpc_init(int update_files) update_files = 0; } - dhcp_hostname = NULL; + if (dhcp_hostname != NULL) { + /* free it */ + dhcp_hostname=bootp_strdup_realloc(dhcp_hostname,0); + } /* * Find a network interface. -- cgit v1.2.3