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

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
This commit is contained in:
Paul Gofman 2022-06-10 20:32:19 -05:00 committed by Alexandre Julliard
parent f397807415
commit 910d58520a
2 changed files with 11 additions and 4 deletions

View file

@ -2326,6 +2326,13 @@ DWORD WINAPI GetIpNetTable( MIB_IPNETTABLE *table, ULONG *size, BOOL sort )
} }
table->dwNumEntries = count; table->dwNumEntries = count;
if (!count)
{
err = ERROR_NO_DATA;
goto err;
}
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
MIB_IPNETROW *row = table->table + i; MIB_IPNETROW *row = table->table + i;

View file

@ -388,11 +388,11 @@ static void testGetIpNetTable(void)
else if (apiReturn == ERROR_INSUFFICIENT_BUFFER) { else if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
PMIB_IPNETTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize); PMIB_IPNETTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
memset(buf, 0xcc, dwSize);
apiReturn = GetIpNetTable(buf, &dwSize, FALSE); apiReturn = GetIpNetTable(buf, &dwSize, FALSE);
ok(apiReturn == NO_ERROR || ok((apiReturn == NO_ERROR && buf->dwNumEntries) || (apiReturn == ERROR_NO_DATA && !buf->dwNumEntries),
apiReturn == ERROR_NO_DATA, /* empty ARP table's okay */ "got apiReturn %lu, dwSize %lu, buf->dwNumEntries %lu.\n",
"GetIpNetTable(buf, &dwSize, FALSE) returned %ld, expected NO_ERROR\n", apiReturn, dwSize, buf->dwNumEntries);
apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1) if (apiReturn == NO_ERROR && winetest_debug > 1)
{ {