[PATCH 1/7] ws2_32: Return WSAEFAULT from setsockopt() for IP_MULTICAST_LOOP with zero optlen.
Zebediah Figura
zfigura at codeweavers.com
Tue Mar 8 11:50:52 CST 2022
On 3/8/22 11:47, Paul Gofman wrote:
> On 3/8/22 19:59, Zebediah Figura wrote:
>> On 3/8/22 03:22, Paul Gofman wrote:
>>> Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
>>> ---
>>> dlls/ws2_32/socket.c | 5 +++++
>>> 1 file changed, 5 insertions(+)
>>>
>>> diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
>>> index dacb41a0403..816ca828b90 100644
>>> --- a/dlls/ws2_32/socket.c
>>> +++ b/dlls/ws2_32/socket.c
>>> @@ -2981,6 +2981,11 @@ int WINAPI setsockopt( SOCKET s, int level,
>>> int optname, const char *optval, int
>>> return server_setsockopt( s,
>>> IOCTL_AFD_WINE_SET_IP_MULTICAST_IF, optval, optlen );
>>> case IP_MULTICAST_LOOP:
>>> + if (!optlen)
>>> + {
>>> + SetLastError( WSAEFAULT );
>>> + return -1;
>>> + }
>>> return server_setsockopt( s,
>>> IOCTL_AFD_WINE_SET_IP_MULTICAST_LOOP, optval, optlen );
>>> case IP_MULTICAST_TTL:
>>
>> Maybe I'm missing something, but given the tests in 4/7, couldn't this
>> be simplified by handling it outside of the inner switch, like in
>> 9744055cf4?
>>
> Possibly, but in the end of my patchset half of the options have 'optlen
> < sizeof(DWORD)' condition. Also, my patchset doesn't add tests for
> "non-DWORD" options "IP_ADD_MEMBERSHIP" and so I don't know if that
> condition applies there. So it isn't apparent for me if generalizing it
> simplifies it, it looks like at very least I'd need to add more tests
> for that not directly related to the initial patchset scope.
>
Okay, fair enough.
More information about the wine-devel
mailing list