[PATCH 1/1] iphlpapi: Return ERROR_NO_DATA from GetIpNetTable() if no entries are found.
Paul Gofman
wine at gitlab.winehq.org
Tue Jun 14 14:12:04 CDT 2022
From: Paul Gofman <pgofman at codeweavers.com>
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)
{
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/245
More information about the wine-devel
mailing list