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)
{
int ret = 0;
#ifndef WOLFSSL_DTLS
(void)on;
#endif
WOLFSSL_ENTER("wolfSSL_BIO_set_nbio");
if (bio) {
switch (bio->type) {
case WOLFSSL_BIO_SOCKET:
#ifdef XFCNTL
{
int ret = 0;
int flag = XFCNTL(bio->num, F_GETFL, 0);
if (on)
if (on) {
ret = XFCNTL(bio->num, F_SETFL, flag | O_NONBLOCK);
else
} else {
ret = XFCNTL(bio->num, F_SETFL, flag & ~O_NONBLOCK);
}
if (ret == -1) {
WOLFSSL_MSG("Call to XFCNTL failed");
}
}
#endif
break;
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");
break;
}
if (ret != -1)
}
return 1;
else
return 0;
}