|
@@ -94,12 +94,23 @@ int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes,
|
|
|
fd_set* excepts, struct timeval *tv);
|
|
|
#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
|
|
|
+
|
|
|
+ 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 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
|
|
|
#define VALID_SOCK(s) (((s) >= 0) && ((s) < FD_SETSIZE))
|
|
|
#define VERIFY_SOCK(x) do { \
|