From bdb739939850eeed03edc3c5822746f12f390f85 Mon Sep 17 00:00:00 2001 From: Juliusz Sosinowicz Date: Thu, 3 Mar 2022 10:25:09 +0100 Subject: [PATCH] Reported in ZD13737 Implement `wolfSSL_BIO_eof` support for most available BIO's --- src/bio.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/bio.c b/src/bio.c index 4602490e1..36b0c3d75 100644 --- a/src/bio.c +++ b/src/bio.c @@ -2201,11 +2201,22 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio) int wolfSSL_BIO_eof(WOLFSSL_BIO* b) { + int ret = 0; WOLFSSL_ENTER("BIO_eof"); - if ((b != NULL) && (b->eof)) - return 1; - return 0; + if (b == NULL) + return 1; /* Undefined in OpenSSL. Let's signal we're done. */ + + switch (b->type) { + case WOLFSSL_BIO_SSL: + ret = b->eof; + break; + default: + ret = wolfSSL_BIO_get_len(b) != 0; + break; + } + + return ret; } long wolfSSL_BIO_do_handshake(WOLFSSL_BIO *b)