1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-23 16:48:49 -05:00

select.h: make socket validation macros test for INVALID_SOCKET

With Winsock the valid range is [0..INVALID_SOCKET-1] according to
https://docs.microsoft.com/en-us/windows/win32/winsock/socket-data-type-2

Reviewed-by: Jay Satiro
Reviewed-by: Marcel Raad
Reviewed-by: Daniel Stenberg

Closes #5760
This commit is contained in:
Marc Hoersken 2020-08-03 15:54:08 +02:00
parent 3a9042ea14
commit 0f7c332f9f
No known key found for this signature in database
GPG Key ID: 61E03CBED7BC859E

View File

@ -94,12 +94,23 @@ int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes,
fd_set* excepts, struct timeval *tv); fd_set* excepts, struct timeval *tv);
#endif #endif
/* Winsock and TPF sockets are not in range [0..FD_SETSIZE-1], which /* TPF sockets are not in range [0..FD_SETSIZE-1], which
unfortunately makes it impossible for us to easily check if they're valid unfortunately makes it impossible for us to easily check if they're valid
With Winsock the valid range is [0..INVALID_SOCKET-1] according to
https://docs.microsoft.com/en-us/windows/win32/winsock/socket-data-type-2
*/ */
#if defined(USE_WINSOCK) || defined(TPF) #if defined(TPF)
#define VALID_SOCK(x) 1 #define VALID_SOCK(x) 1
#define VERIFY_SOCK(x) Curl_nop_stmt #define VERIFY_SOCK(x) Curl_nop_stmt
#elif defined(USE_WINSOCK)
#define VALID_SOCK(s) ((s) < INVALID_SOCKET)
#define VERIFY_SOCK(x) do { \
if(!VALID_SOCK(x)) { \
SET_SOCKERRNO(WSAEINVAL); \
return -1; \
} \
} while(0)
#else #else
#define VALID_SOCK(s) (((s) >= 0) && ((s) < FD_SETSIZE)) #define VALID_SOCK(s) (((s) >= 0) && ((s) < FD_SETSIZE))
#define VERIFY_SOCK(x) do { \ #define VERIFY_SOCK(x) do { \