iphlpapi: Fix GetAdaptersAddresses return values.
This commit is contained in:
parent
8dceb07620
commit
bfc8832ccb
|
@ -1115,10 +1115,13 @@ ULONG WINAPI GetAdaptersAddresses(ULONG family, ULONG flags, PVOID reserved,
|
|||
{
|
||||
if (aa->IfType != IF_TYPE_SOFTWARE_LOOPBACK && aa->OperStatus == IfOperStatusUp)
|
||||
aa->DnsSuffix = dnsSuffix;
|
||||
else
|
||||
aa->DnsSuffix = (WCHAR *)((BYTE*)dnsSuffix + dns_suffix_size - 2);
|
||||
}
|
||||
ret = ERROR_SUCCESS;
|
||||
}
|
||||
if (*buflen < total_size) ret = ERROR_BUFFER_OVERFLOW;
|
||||
else
|
||||
ret = ERROR_BUFFER_OVERFLOW;
|
||||
*buflen = total_size;
|
||||
|
||||
TRACE("num adapters %u\n", table->numIndexes);
|
||||
|
|
|
@ -819,7 +819,7 @@ static void testWin2KFunctions(void)
|
|||
static void test_GetAdaptersAddresses(void)
|
||||
{
|
||||
ULONG ret, size;
|
||||
IP_ADAPTER_ADDRESSES *aa;
|
||||
IP_ADAPTER_ADDRESSES *aa, *ptr;
|
||||
IP_ADAPTER_UNICAST_ADDRESS *ua;
|
||||
|
||||
if (!gGetAdaptersAddresses)
|
||||
|
@ -831,17 +831,25 @@ static void test_GetAdaptersAddresses(void)
|
|||
ret = gGetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, NULL);
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER got %u\n", ret);
|
||||
|
||||
size = 0;
|
||||
/* size should be ignored and overwritten if buffer is NULL */
|
||||
size = 0x7fffffff;
|
||||
ret = gGetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, &size);
|
||||
ok(ret == ERROR_BUFFER_OVERFLOW, "expected ERROR_BUFFER_OVERFLOW, got %u\n", ret);
|
||||
if (ret != ERROR_BUFFER_OVERFLOW) return;
|
||||
|
||||
aa = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
ret = gGetAdaptersAddresses(AF_UNSPEC, 0, NULL, aa, &size);
|
||||
ptr = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
ret = gGetAdaptersAddresses(AF_UNSPEC, 0, NULL, ptr, &size);
|
||||
ok(!ret, "expected ERROR_SUCCESS got %u\n", ret);
|
||||
|
||||
while (!ret && winetest_debug > 1 && aa)
|
||||
for (aa = ptr; !ret && aa; aa = aa->Next)
|
||||
{
|
||||
ok(aa->DnsSuffix != NULL, "DnsSuffix is not a valid pointer\n");
|
||||
ok(aa->Description != NULL, "Description is not a valid pointer\n");
|
||||
ok(aa->FriendlyName != NULL, "FriendlyName is not a valid pointer\n");
|
||||
|
||||
if (winetest_debug <= 1)
|
||||
continue;
|
||||
|
||||
trace("Length: %u\n", S(U(*aa)).Length);
|
||||
trace("IfIndex: %u\n", S(U(*aa)).IfIndex);
|
||||
trace("Next: %p\n", aa->Next);
|
||||
|
@ -877,9 +885,8 @@ static void test_GetAdaptersAddresses(void)
|
|||
trace("IfType: %u\n", aa->IfType);
|
||||
trace("OperStatus: %u\n", aa->OperStatus);
|
||||
trace("\n");
|
||||
aa = aa->Next;
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, aa);
|
||||
HeapFree(GetProcessHeap(), 0, ptr);
|
||||
}
|
||||
|
||||
START_TEST(iphlpapi)
|
||||
|
|
Loading…
Reference in New Issue