[PATCH] Added support for ConvertLengthToIpv4Mask in iphlpapi

Dagfinn Reiakvam dagfinn at reiakvam.no
Fri Mar 16 08:01:18 CDT 2018


Hi Zhiyi,

I must have overlooked setting Mask on failure. I can fix that.

I was considering setting a lower bound as well, but I was uncertain 
what that bound would be. The MaskLength is unsigned, negative numbers 
at least are not possible.

And I should defiantly write some tests, since I already see that I 
screwed up on the INVALID_PARAMETER check (used '<=' not '>=').

I will fix my mistakes and come back with a better patch :)

Uberdaff

On 16. mars 2018 09:21, Zhiyi Zhang wrote:
>
> Hi Uberdaff,
>
>> On success,*ConvertLengthToIpv4Mask*returns*NO_ERROR*. Any nonzero 
>> return value indicates failure and the/Mask/parameter is set 
>> to*INADDR_NONE*defined in the/Ws2def.h/header file.
> MSDN says Mask parameter also gets set on failure.
>
>> if(MaskLength <= 32)
>>          return ERROR_INVALID_PARAMETER;
> Maybe we should check MaskLength lower bound as well?
>
> I haven't really look into it yet because even MSDN can be wrong. But 
> I suggest you add a test to verify.
> If you're sending the patch on others behalf and you're not familiar 
> with how to write a test, contact original author.
>
> Zhiyi Zhang
>
> On 3/16/2018 5:02 AM, Uberdaff wrote:
>> From: Dagfinn Reiakvam<dagfinn at reiakvam.no>
>>
>> ---
>>   dlls/iphlpapi/iphlpapi.spec   |  2 +-
>>   dlls/iphlpapi/iphlpapi_main.c | 11 +++++++++++
>>   2 files changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/dlls/iphlpapi/iphlpapi.spec b/dlls/iphlpapi/iphlpapi.spec
>> index b6c9aef..bbd1ed8 100644
>> --- a/dlls/iphlpapi/iphlpapi.spec
>> +++ b/dlls/iphlpapi/iphlpapi.spec
>> @@ -23,7 +23,7 @@
>>   @ stdcall ConvertInterfaceNameToLuidW( wstr ptr )
>>   #@ stub ConvertInterfacePhysicalAddressToLuid
>>   #@ stub ConvertIpv4MaskToLength
>> -#@ stub ConvertLengthToIpv4Mask
>> +@ stdcall ConvertLengthToIpv4Mask( long ptr )
>>   #@ stub ConvertRemoteInterfaceAliasToLuid
>>   #@ stub ConvertRemoteInterfaceGuidToLuid
>>   #@ stub ConvertRemoteInterfaceIndexToLuid
>> diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
>> index 97284ed..891f8f0 100644
>> --- a/dlls/iphlpapi/iphlpapi_main.c
>> +++ b/dlls/iphlpapi/iphlpapi_main.c
>> @@ -3223,6 +3223,17 @@ DWORD WINAPI ConvertInterfaceNameToLuidW(const WCHAR *name, NET_LUID *luid)
>>   }
>>   
>>   /******************************************************************
>> + *    ConvertLengthToIpv4Mask (IPHLPAPI.@)
>> + */
>> +DWORD WINAPI ConvertLengthToIpv4Mask(ULONG MaskLength, PULONG Mask)
>> +{
>> +    if(MaskLength <= 32)
>> +        return ERROR_INVALID_PARAMETER;
>> +    *Mask = 0xffffffff << ( 32 - MaskLength );
>> +    return NO_ERROR;
>> +}
>> +
>> +/******************************************************************
>>    *    if_nametoindex (IPHLPAPI.@)
>>    */
>>   IF_INDEX WINAPI IPHLP_if_nametoindex(const char *name)
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20180316/deff4a1c/attachment-0001.html>


More information about the wine-devel mailing list