diff options
-rw-r--r-- | CHANGES | 6 | ||||
-rw-r--r-- | lib/if2ip.c | 4 |
2 files changed, 9 insertions, 1 deletions
@@ -6,6 +6,12 @@ Changelog +Daniel S (12 April 2007) +- Song Ma found a memory leak in the if2ip code if you pass in an interface + name longer than the name field of the ifreq struct (typically 6 bytes), as + then it wouldn't close the used dummy socket. Bug #1698974 + (http://curl.haxx.se/bug/view.cgi?id=1698974) + Version 7.16.2 (11 April 2007) Yang Tse (10 April 2007) diff --git a/lib/if2ip.c b/lib/if2ip.c index b21727156..02bc6b94a 100644 --- a/lib/if2ip.c +++ b/lib/if2ip.c @@ -98,8 +98,10 @@ char *Curl_if2ip(const char *interface, char *buf, int buf_size) struct ifreq req; size_t len = strlen(interface); memset(&req, 0, sizeof(req)); - if(len >= sizeof(req.ifr_name)) + if(len >= sizeof(req.ifr_name)) { + sclose(dummy); return NULL; /* this can't be a fine interface name */ + } memcpy(req.ifr_name, interface, len+1); req.ifr_addr.sa_family = AF_INET; #ifdef IOCTL_3_ARGS |