diff options
author | olszomal <Malgorzata.Olszowka@stunnel.org> | 2024-04-04 11:34:33 +0200 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2024-04-10 09:25:52 +0200 |
commit | 77b8154b4359a6ed4686d4cb7373b606d179a4ad (patch) | |
tree | f997bc3168887dfa84e7182be47e8353fd08d674 | |
parent | e9bf4c720873011c439be2f12fb7e057b4e9ea61 (diff) |
Fix socket descriptor checks on Windows
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24035)
(cherry picked from commit c89baf871030c811ba316ccbdcea26c294f605ae)
-rw-r--r-- | crypto/bio/bio_lib.c | 8 | ||||
-rw-r--r-- | crypto/bio/bio_sock.c | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/crypto/bio/bio_lib.c b/crypto/bio/bio_lib.c index e4f72bcd1b..9802d4fde7 100644 --- a/crypto/bio/bio_lib.c +++ b/crypto/bio/bio_lib.c @@ -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 */ diff --git a/crypto/bio/bio_sock.c b/crypto/bio/bio_sock.c index ee3ee5b78f..a55ecc22c1 100644 --- a/crypto/bio/bio_sock.c +++ b/crypto/bio/bio_sock.c @@ -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; |