Adapt patch from Adam Langley: fix possible memory leak in tor_lookup_hostname

svn:r4326
This commit is contained in:
Nick Mathewson 2005-06-07 13:45:58 +00:00
parent a92ff1c4e9
commit 1d9bc936c2

View File

@ -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;