ws2_32: sendmsg on OS/X and BSD returns EMSGSIZE error for size 0

Aric Stewart aric at codeweavers.com
Fri Mar 4 11:08:32 CST 2011


Looks like WS2_ConnectEx is at fault.

It is being called with a sendBuf of NULL which results in n_iovecs and 
first_iovec being set to 0 resulting in a len of 0.

I see no evidence of checking for this case along that codepath.

-aric

On 3/4/11 10:47 AM, Alexandre Julliard wrote:
> Aric Stewart<aric at codeweavers.com>  writes:
>
>> @@ -1781,6 +1781,9 @@ static int WS2_send( int fd, struct ws2_async *wsa )
>>               wsa->iovec[wsa->first_iovec].iov_len -= n;
>>           }
>>       }
>> +    /* BSD and OS/X return EMSGSIZE if hdr.msg_iovlen is 0 */
>> +    else if ( hdr.msg_iovlen == 0&&  errno == EMSGSIZE)
>> +        ret = 0;
>
> This should never happen. We should always have at least one iov at that
> point, the callers should make sure of that.
>



More information about the wine-devel mailing list