aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES6
-rw-r--r--lib/if2ip.c4
2 files changed, 9 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 344db759b..e82301db9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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