diff --git a/libfreerdp/crypto/tls.c b/libfreerdp/crypto/tls.c index dbd60ee56..c9687feb4 100644 --- a/libfreerdp/crypto/tls.c +++ b/libfreerdp/crypto/tls.c @@ -448,7 +448,8 @@ static long bio_rdp_tls_ctrl(BIO* bio, int cmd, long num, void* ptr) if (status <= 0) { - switch (SSL_get_error(tls->ssl, status)) + const int err = (status < INT32_MIN) ? INT32_MIN : (int)status; + switch (SSL_get_error(tls->ssl, err)) { case SSL_ERROR_WANT_READ: BIO_set_flags(bio, BIO_FLAGS_READ | BIO_FLAGS_SHOULD_RETRY);