Fixed using wrong sockaddr type in lwip_getaddrinfo when IPv6 is enabled

This commit is contained in:
Dirk Ziegelmeier
2015-09-17 20:55:44 +02:00
committed by sg
parent 52a4ca99a8
commit cca758d332
3 changed files with 7 additions and 3 deletions

View File

@@ -346,7 +346,7 @@ lwip_getaddrinfo(const char *nodename, const char *servname,
}
}
total_size = sizeof(struct addrinfo) + sizeof(struct sockaddr_in);
total_size = sizeof(struct addrinfo) + sizeof(struct sockaddr_storage);
if (nodename != NULL) {
namelen = strlen(nodename);
if (namelen > DNS_MAX_NAME_LENGTH) {
@@ -395,11 +395,11 @@ lwip_getaddrinfo(const char *nodename, const char *servname,
}
if (nodename != NULL) {
/* copy nodename to canonname if specified */
ai->ai_canonname = ((char*)ai + sizeof(struct addrinfo) + sizeof(struct sockaddr_in));
ai->ai_canonname = ((char*)ai + sizeof(struct addrinfo) + sizeof(struct sockaddr_storage));
MEMCPY(ai->ai_canonname, nodename, namelen);
ai->ai_canonname[namelen] = 0;
}
ai->ai_addrlen = sizeof(struct sockaddr_in);
ai->ai_addrlen = sizeof(struct sockaddr_storage);
ai->ai_addr = (struct sockaddr*)sa;
*res = ai;