wasi_socket_ext.c: fix the number of getaddrinfo results (#4466)
the case of zero results was especially broken.
This commit is contained in:
@ -541,10 +541,10 @@ getaddrinfo(const char *node, const char *service, const struct addrinfo *hints,
|
|||||||
}
|
}
|
||||||
} while (max_info_size > addr_info_size);
|
} while (max_info_size > addr_info_size);
|
||||||
|
|
||||||
|
addr_info_size = max_info_size;
|
||||||
if (addr_info_size == 0) {
|
if (addr_info_size == 0) {
|
||||||
free(addr_info);
|
free(addr_info);
|
||||||
*res = NULL;
|
HANDLE_ERROR(__WASI_ERRNO_NOENT)
|
||||||
return __WASI_ERRNO_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
aibuf_res =
|
aibuf_res =
|
||||||
@ -556,10 +556,6 @@ getaddrinfo(const char *node, const char *service, const struct addrinfo *hints,
|
|||||||
|
|
||||||
*res = &aibuf_res[0].ai;
|
*res = &aibuf_res[0].ai;
|
||||||
|
|
||||||
if (addr_info_size) {
|
|
||||||
addr_info_size = max_info_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < addr_info_size; i++) {
|
for (i = 0; i < addr_info_size; i++) {
|
||||||
struct addrinfo *ai = &aibuf_res[i].ai;
|
struct addrinfo *ai = &aibuf_res[i].ai;
|
||||||
ai->ai_addr = (struct sockaddr *)&aibuf_res[i].sa;
|
ai->ai_addr = (struct sockaddr *)&aibuf_res[i].sa;
|
||||||
|
|||||||
Reference in New Issue
Block a user