Paul Gofman : iphlpapi: Return ERROR_NO_DATA from GetIpNetTable() if no entries are found.

Alexandre Julliard julliard at winehq.org
Wed Jun 15 16:05:57 CDT 2022


Module: wine
Branch: master
Commit: 910d58520a6d75cada82d992757ca013099d9345
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=910d58520a6d75cada82d992757ca013099d9345

Author: Paul Gofman <pgofman at codeweavers.com>
Date:   Fri Jun 10 20:32:19 2022 -0500

iphlpapi: Return ERROR_NO_DATA from GetIpNetTable() if no entries are found.

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>

---

 dlls/iphlpapi/iphlpapi_main.c  | 7 +++++++
 dlls/iphlpapi/tests/iphlpapi.c | 8 ++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 5a4acdb9c5a..33b12361d70 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -2326,6 +2326,13 @@ DWORD WINAPI GetIpNetTable( MIB_IPNETTABLE *table, ULONG *size, BOOL sort )
     }
 
     table->dwNumEntries = count;
+
+    if (!count)
+    {
+        err = ERROR_NO_DATA;
+        goto err;
+    }
+
     for (i = 0; i < count; i++)
     {
         MIB_IPNETROW *row = table->table + i;
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index c40ae3989c6..29256eb2774 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -388,11 +388,11 @@ static void testGetIpNetTable(void)
     else if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
         PMIB_IPNETTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
 
+        memset(buf, 0xcc, dwSize);
         apiReturn = GetIpNetTable(buf, &dwSize, FALSE);
-        ok(apiReturn == NO_ERROR ||
-           apiReturn == ERROR_NO_DATA, /* empty ARP table's okay */
-           "GetIpNetTable(buf, &dwSize, FALSE) returned %ld, expected NO_ERROR\n",
-           apiReturn);
+        ok((apiReturn == NO_ERROR && buf->dwNumEntries) || (apiReturn == ERROR_NO_DATA && !buf->dwNumEntries),
+            "got apiReturn %lu, dwSize %lu, buf->dwNumEntries %lu.\n",
+            apiReturn, dwSize, buf->dwNumEntries);
 
         if (apiReturn == NO_ERROR && winetest_debug > 1)
         {




More information about the wine-cvs mailing list