[PATCH] ws2_32: Handle more IGMP socket options

Hans Leidekker hans at codeweavers.com
Fri Oct 18 09:04:09 CDT 2019


On Fri, 2019-10-18 at 15:27 +0200, Fabian Maurer wrote:
> @@ -6011,6 +6015,20 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname,
>      case WS_IPPROTO_IP:
>          switch(optname)
>          {
> +        case WS_IP_ADD_SOURCE_MEMBERSHIP:
> +        case WS_IP_DROP_SOURCE_MEMBERSHIP:
> +        case WS_IP_BLOCK_SOURCE:
> +        case WS_IP_UNBLOCK_SOURCE:
> +        {
> +            /* ip_mreq_source is different on Windows, we need to switch source and interface */
> +            struct ip_mreq_source * val = (void*)optval;
> +            struct in_addr temp_addr = val->imr_sourceaddr;
> +            val->imr_sourceaddr = val->imr_interface;
> +            val->imr_interface = temp_addr;

You are modifying a structure owned by the caller. Look at how we build
a local copy for WS_SO_LINGER, for example.





More information about the wine-devel mailing list