Module: wine
Branch: master
Commit: 317fd11e85157e0b9eaca1d001914706072d3f7f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=317fd11e85157e0b9eaca1d00…
Author: Bruno Jesus <00cpxxx(a)gmail.com>
Date: Thu Jan 15 10:13:34 2015 -0200
iphlpapi: Set 0.0.0.0 as the IP and mask of disconnected interfaces.
---
dlls/iphlpapi/iphlpapi_main.c | 6 ++++++
dlls/iphlpapi/tests/iphlpapi.c | 10 +++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 59f3593..d2f36fe 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -604,6 +604,12 @@ DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
}
}
}
+ /* If no IP was found it probably means that the interface is not
+ * configured. In this case we have to return a zeroed IP and mask. */
+ if (firstIPAddr) {
+ strcpy(ptr->IpAddressList.IpAddress.String, "0.0.0.0");
+ strcpy(ptr->IpAddressList.IpMask.String, "0.0.0.0");
+ }
/* Find first router through this interface, which we'll assume
* is the default gateway for this adapter */
for (i = 0; i < routeTable->dwNumEntries; i++)
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index b2d81c0..14bbc5d 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -1118,12 +1118,20 @@ static void testGetAdaptersInfo(void)
if (apiReturn == ERROR_NO_DATA)
; /* no adapter's, that's okay */
else if (apiReturn == ERROR_BUFFER_OVERFLOW) {
- PIP_ADAPTER_INFO buf = HeapAlloc(GetProcessHeap(), 0, len);
+ PIP_ADAPTER_INFO ptr, buf = HeapAlloc(GetProcessHeap(), 0, len);
apiReturn = pGetAdaptersInfo(buf, &len);
ok(apiReturn == NO_ERROR,
"GetAdaptersInfo(buf, &dwSize) returned %d, expected NO_ERROR\n",
apiReturn);
+ ptr = buf;
+ while (ptr) {
+ ok(ptr->IpAddressList.IpAddress.String[0], "A valid IP must be present\n");
+ ok(ptr->IpAddressList.IpMask.String[0], "A valid mask must be present\n");
+ trace("Adapter '%s', IP %s, Mask %s\n", ptr->AdapterName,
+ ptr->IpAddressList.IpAddress.String, ptr->IpAddressList.IpMask.String);
+ ptr = ptr->Next;
+ }
HeapFree(GetProcessHeap(), 0, buf);
}
}