BIO_set_nbio() should always return 1, check input bio for NULL before using

This commit is contained in:
Chris Conlon
2021-08-20 14:00:33 -06:00
committed by Hayden Roche
parent 9bd300e07d
commit f6b91f04ed

View File

@@ -1660,22 +1660,28 @@ void* wolfSSL_BIO_get_data(WOLFSSL_BIO* bio)
*/ */
long wolfSSL_BIO_set_nbio(WOLFSSL_BIO* bio, long on) long wolfSSL_BIO_set_nbio(WOLFSSL_BIO* bio, long on)
{ {
int ret = 0;
#ifndef WOLFSSL_DTLS #ifndef WOLFSSL_DTLS
(void)on; (void)on;
#endif #endif
WOLFSSL_ENTER("wolfSSL_BIO_set_nbio"); WOLFSSL_ENTER("wolfSSL_BIO_set_nbio");
if (bio) {
switch (bio->type) { switch (bio->type) {
case WOLFSSL_BIO_SOCKET: case WOLFSSL_BIO_SOCKET:
#ifdef XFCNTL #ifdef XFCNTL
{ {
int ret = 0;
int flag = XFCNTL(bio->num, F_GETFL, 0); int flag = XFCNTL(bio->num, F_GETFL, 0);
if (on) if (on) {
ret = XFCNTL(bio->num, F_SETFL, flag | O_NONBLOCK); ret = XFCNTL(bio->num, F_SETFL, flag | O_NONBLOCK);
else } else {
ret = XFCNTL(bio->num, F_SETFL, flag & ~O_NONBLOCK); ret = XFCNTL(bio->num, F_SETFL, flag & ~O_NONBLOCK);
} }
if (ret == -1) {
WOLFSSL_MSG("Call to XFCNTL failed");
}
}
#endif #endif
break; break;
case WOLFSSL_BIO_SSL: case WOLFSSL_BIO_SSL:
@@ -1688,10 +1694,9 @@ long wolfSSL_BIO_set_nbio(WOLFSSL_BIO* bio, long on)
WOLFSSL_MSG("Unsupported bio type for non blocking"); WOLFSSL_MSG("Unsupported bio type for non blocking");
break; break;
} }
if (ret != -1) }
return 1; return 1;
else
return 0;
} }