From c38c33948067a3e2a170d337d940f7e27423ae07 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 12 Apr 2007 20:09:19 +0000 Subject: 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. --- CHANGES | 6 ++++++ lib/if2ip.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3