[PATCH] Added support for ConvertLengthToIpv4Mask in iphlpapi

Zhiyi Zhang yi.gd.cn at gmail.com
Fri Mar 16 03:21:15 CDT 2018


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/0fbde580/attachment-0001.html>


More information about the wine-devel mailing list