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.
This commit is contained in:
6
CHANGES
6
CHANGES
@@ -6,6 +6,12 @@
|
|||||||
|
|
||||||
Changelog
|
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)
|
Version 7.16.2 (11 April 2007)
|
||||||
|
|
||||||
Yang Tse (10 April 2007)
|
Yang Tse (10 April 2007)
|
||||||
|
|||||||
@@ -98,8 +98,10 @@ char *Curl_if2ip(const char *interface, char *buf, int buf_size)
|
|||||||
struct ifreq req;
|
struct ifreq req;
|
||||||
size_t len = strlen(interface);
|
size_t len = strlen(interface);
|
||||||
memset(&req, 0, sizeof(req));
|
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 */
|
return NULL; /* this can't be a fine interface name */
|
||||||
|
}
|
||||||
memcpy(req.ifr_name, interface, len+1);
|
memcpy(req.ifr_name, interface, len+1);
|
||||||
req.ifr_addr.sa_family = AF_INET;
|
req.ifr_addr.sa_family = AF_INET;
|
||||||
#ifdef IOCTL_3_ARGS
|
#ifdef IOCTL_3_ARGS
|
||||||
|
|||||||
Reference in New Issue
Block a user