forked from wolfSSL/wolfssl
BIO_set_nbio() should always return 1, check input bio for NULL before using
This commit is contained in:
committed by
Hayden Roche
parent
9bd300e07d
commit
f6b91f04ed
17
src/bio.c
17
src/bio.c
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user