Commit 10d0bfda authored by CurlyMoo's avatar CurlyMoo

Replace obsolete gethostbyname by getaddrinfo

This also protect against the latest glibc bug
parent 6b6637c3
...@@ -593,14 +593,28 @@ int ns_socketpair(sock_t sp[2]) { ...@@ -593,14 +593,28 @@ int ns_socketpair(sock_t sp[2]) {
// TODO(lsm): use non-blocking resolver // TODO(lsm): use non-blocking resolver
static int ns_resolve2(const char *host, struct in_addr *ina) { static int ns_resolve2(const char *host, struct in_addr *ina) {
struct hostent *he; int rv = 0;
if ((he = gethostbyname(host)) == NULL) { struct addrinfo hints, *servinfo, *p;
DBG(("gethostbyname(%s) failed: %s", host, strerror(errno))); struct sockaddr_in *h = NULL;
} else { char *ip = malloc(17);
memcpy(ina, he->h_addr_list[0], sizeof(*ina)); memset(ip, '\0', 17);
return 1;
} memset(&hints, 0, sizeof hints);
return 0; hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
if((rv = getaddrinfo(host, NULL , NULL, &servinfo)) != 0) {
return 0;
}
for(p = servinfo; p != NULL; p = p->ai_next) {
memcpy(&h, &p->ai_addr, sizeof(struct sockaddr_in *));
memcpy(ina, &h->sin_addr, sizeof(ina));
}
freeaddrinfo(servinfo);
return 1;
} }
// Resolve FDQN "host", store IP address in the "ip". // Resolve FDQN "host", store IP address in the "ip".
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment