ws2_32: Validate IP_TOS value.

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Paul Gofman 2022-03-05 22:04:08 +03:00 committed by Alexandre Julliard
parent 4d60b85f3b
commit 84bb7cd88d
1 changed files with 13 additions and 0 deletions

View File

@ -2776,6 +2776,8 @@ static int server_setsockopt( SOCKET s, ULONG code, const char *optval, int optl
*/
int WINAPI setsockopt( SOCKET s, int level, int optname, const char *optval, int optlen )
{
DWORD value = 0;
TRACE( "socket %#Ix, %s, optval %s, optlen %d\n",
s, debugstr_sockopt(level, optname), debugstr_optval(optval, optlen), optlen );
@ -2997,6 +2999,17 @@ int WINAPI setsockopt( SOCKET s, int level, int optname, const char *optval, int
return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_RECVTTL, optval, optlen );
case IP_TOS:
if (!optlen || !optval)
{
SetLastError(WSAEFAULT);
return SOCKET_ERROR;
}
memcpy( &value, optval, min( optlen, sizeof(value) ));
if (value > 0xff)
{
SetLastError(WSAEINVAL);
return SOCKET_ERROR;
}
return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_TOS, optval, optlen );
case IP_TTL: