Explorar o código

wasi_socket_ext.c: fix the number of getaddrinfo results (#4466)

the case of zero results was especially broken.
YAMAMOTO Takashi hai 6 meses
pai
achega
2a952b371a
Modificáronse 1 ficheiros con 2 adicións e 6 borrados
  1. 2 6
      core/iwasm/libraries/lib-socket/src/wasi/wasi_socket_ext.c

+ 2 - 6
core/iwasm/libraries/lib-socket/src/wasi/wasi_socket_ext.c

@@ -541,10 +541,10 @@ getaddrinfo(const char *node, const char *service, const struct addrinfo *hints,
         }
     } while (max_info_size > addr_info_size);
 
+    addr_info_size = max_info_size;
     if (addr_info_size == 0) {
         free(addr_info);
-        *res = NULL;
-        return __WASI_ERRNO_SUCCESS;
+        HANDLE_ERROR(__WASI_ERRNO_NOENT)
     }
 
     aibuf_res =
@@ -556,10 +556,6 @@ getaddrinfo(const char *node, const char *service, const struct addrinfo *hints,
 
     *res = &aibuf_res[0].ai;
 
-    if (addr_info_size) {
-        addr_info_size = max_info_size;
-    }
-
     for (i = 0; i < addr_info_size; i++) {
         struct addrinfo *ai = &aibuf_res[i].ai;
         ai->ai_addr = (struct sockaddr *)&aibuf_res[i].sa;