mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-09-21 13:34:59 +02:00
Adapt patch from Adam Langley: fix possible memory leak in tor_lookup_hostname
svn:r4326
This commit is contained in:
parent
a92ff1c4e9
commit
1d9bc936c2
@ -526,8 +526,9 @@ int tor_lookup_hostname(const char *name, uint32_t *addr)
|
|||||||
} else {
|
} else {
|
||||||
#ifdef HAVE_GETADDRINFO
|
#ifdef HAVE_GETADDRINFO
|
||||||
int err;
|
int err;
|
||||||
struct addrinfo *res, *res_p;
|
struct addrinfo *res=NULL, *res_p;
|
||||||
struct addrinfo hints;
|
struct addrinfo hints;
|
||||||
|
int result = -1;
|
||||||
memset(&hints, 0, sizeof(hints));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_family = PF_INET;
|
hints.ai_family = PF_INET;
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
@ -537,14 +538,13 @@ int tor_lookup_hostname(const char *name, uint32_t *addr)
|
|||||||
if (res_p->ai_family == AF_INET) {
|
if (res_p->ai_family == AF_INET) {
|
||||||
struct sockaddr_in *sin = (struct sockaddr_in *)res_p->ai_addr;
|
struct sockaddr_in *sin = (struct sockaddr_in *)res_p->ai_addr;
|
||||||
memcpy(addr, &sin->sin_addr, 4);
|
memcpy(addr, &sin->sin_addr, 4);
|
||||||
|
result = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
freeaddrinfo(res);
|
freeaddrinfo(res);
|
||||||
return 0;
|
return result;
|
||||||
} else {
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (err == EAI_AGAIN) ? 1 : -1;
|
return (err == EAI_AGAIN) ? 1 : -1;
|
||||||
#else
|
#else
|
||||||
struct hostent *ent;
|
struct hostent *ent;
|
||||||
|
Loading…
Reference in New Issue
Block a user