[PATCH v4] iphlpapi: Fix the field 'AdapterName' of IP_ADAPTER_INFO returned by GetAdaptersInfo.

Huw Davies huw at codeweavers.com
Tue Jun 15 01:23:58 CDT 2021


On Tue, Jun 15, 2021 at 01:28:57PM +0800, Yeshun Ye wrote:
> Signed-off-by: Yeshun Ye <yeyeshun at uniontech.com>
> ---
>  dlls/iphlpapi/iphlpapi_main.c | 9 ++++++++-
>  1 file changed, 8 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],

You should add a test for this.  It doesn't have to be as complicated as the one
you tried in v3---in testGetAdaptersInfo() add bascially a copy of the above code
to generate the expected name from the returned index.

Huw.



More information about the wine-devel mailing list