]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix socket descriptor checks on Windows
authorolszomal <Malgorzata.Olszowka@stunnel.org>
Thu, 4 Apr 2024 09:34:33 +0000 (11:34 +0200)
committerTomas Mraz <tomas@openssl.org>
Wed, 10 Apr 2024 07:25:23 +0000 (09:25 +0200)
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24035)

crypto/bio/bio_lib.c
crypto/bio/bio_sock.c

index bb3c12ddbb13159e2b2f74edcc6d88b111c7450d..272189a9a6472f219098f98829a6503be3d25c1a 100644 (file)
@@ -965,8 +965,12 @@ static int bio_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds)
         return 1;
 
 #ifndef OPENSSL_NO_SOCK
-    if (BIO_get_fd(bio, &fd) > 0 && fd < FD_SETSIZE)
-        return BIO_socket_wait(fd, BIO_should_read(bio), max_time);
+    if (BIO_get_fd(bio, &fd) > 0) {
+        int ret = BIO_socket_wait(fd, BIO_should_read(bio), max_time);
+
+        if (ret != -1)
+            return ret;
+    }
 #endif
     /* fall back to polling since no sockets are available */
 
index 7aa7bdc65ee90d579655a6c9fa9c6e20994b1806..52b11fa8c1d2279399d1b903394265dc391ca0a5 100644 (file)
@@ -435,7 +435,11 @@ int BIO_socket_wait(int fd, int for_read, time_t max_time)
     struct timeval tv;
     time_t now;
 
+#ifdef _WIN32
+    if ((SOCKET)fd == INVALID_SOCKET)
+#else
     if (fd < 0 || fd >= FD_SETSIZE)
+#endif
         return -1;
     if (max_time == 0)
         return 1;