Yeshun Ye : iphlpapi: Fix the field 'AdapterName' of IP_ADAPTER_INFO returned by GetAdaptersInfo.

Alexandre Julliard julliard at winehq.org
Thu Jun 17 15:38:05 CDT 2021


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

Author: Yeshun Ye <yeyeshun at uniontech.com>
Date:   Thu Jun 17 08:56:30 2021 +0800

iphlpapi: Fix the field 'AdapterName' of IP_ADAPTER_INFO returned by GetAdaptersInfo.

Signed-off-by: Yeshun Ye <yeyeshun at uniontech.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/iphlpapi/iphlpapi_main.c  |  9 ++++++++-
 dlls/iphlpapi/tests/iphlpapi.c | 10 ++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index 09414d26dde..21edd9ee128 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -706,9 +706,16 @@ DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
               DWORD i;
               PIP_ADDR_STRING currentIPAddr = &ptr->IpAddressList;
               BOOL firstIPAddr = TRUE;
+              NET_LUID luid;
+              GUID guid;
 
               /* on Win98 this is left empty, but whatever */
-              getInterfaceNameByIndex(table->indexes[ndx], ptr->AdapterName);
+              ConvertInterfaceIndexToLuid(table->indexes[ndx], &luid);
+              ConvertInterfaceLuidToGuid(&luid, &guid);
+              sprintf(ptr->AdapterName, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+                      guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1],
+                      guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5],
+                      guid.Data4[6], guid.Data4[7]);
               getInterfaceNameByIndex(table->indexes[ndx], ptr->Description);
               ptr->AddressLength = sizeof(ptr->Address);
               getInterfacePhysicalByIndex(table->indexes[ndx],
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index 358084fde68..b6e62138256 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -1115,6 +1115,9 @@ static void testGetAdaptersInfo(void)
         ; /* no adapter's, that's okay */
     else if (apiReturn == ERROR_BUFFER_OVERFLOW) {
         PIP_ADAPTER_INFO ptr, buf = HeapAlloc(GetProcessHeap(), 0, len);
+        NET_LUID luid;
+        GUID guid;
+        char AdapterName[ARRAY_SIZE(ptr->AdapterName)];
 
         apiReturn = GetAdaptersInfo(buf, &len);
         ok(apiReturn == NO_ERROR,
@@ -1122,6 +1125,13 @@ static void testGetAdaptersInfo(void)
            apiReturn);
         ptr = buf;
         while (ptr) {
+            ConvertInterfaceIndexToLuid(ptr->Index, &luid);
+            ConvertInterfaceLuidToGuid(&luid, &guid);
+            sprintf(AdapterName, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+                    guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1],
+                    guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5],
+                    guid.Data4[6], guid.Data4[7]);
+            ok(!strcmp(ptr->AdapterName, AdapterName), "expected '%s' got '%s'\n", ptr->AdapterName, AdapterName);
             ok(ptr->IpAddressList.IpAddress.String[0], "A valid IP address must be present\n");
             ok(ptr->IpAddressList.IpMask.String[0], "A valid mask must be present\n");
             ok(ptr->GatewayList.IpAddress.String[0], "A valid IP address must be present\n");




More information about the wine-cvs mailing list