forked from wolfSSL/wolfssl
Add error handling to wolfSSL_BIO_get_len (#4385)
This commit is contained in:
@@ -1552,12 +1552,18 @@ int wolfSSL_BIO_get_len(WOLFSSL_BIO *bio)
|
|||||||
|
|
||||||
WOLFSSL_ENTER("wolfSSL_BIO_get_len");
|
WOLFSSL_ENTER("wolfSSL_BIO_get_len");
|
||||||
|
|
||||||
if ((len = wolfSSL_BIO_pending(bio)) > 0) {
|
if (bio == NULL) {
|
||||||
|
WOLFSSL_MSG("WOLFSSL_BIO was null");
|
||||||
|
len = BAD_FUNC_ARG;
|
||||||
|
}
|
||||||
|
else if ((len = wolfSSL_BIO_pending(bio)) > 0) {
|
||||||
}
|
}
|
||||||
#ifndef NO_FILESYSTEM
|
#ifndef NO_FILESYSTEM
|
||||||
else if (bio->type == WOLFSSL_BIO_FILE) {
|
else if (bio->type == WOLFSSL_BIO_FILE) {
|
||||||
if (wolfSSL_BIO_get_fp(bio, &file) != WOLFSSL_SUCCESS)
|
if (wolfSSL_BIO_get_fp(bio, &file) != WOLFSSL_SUCCESS)
|
||||||
len = BAD_FUNC_ARG;
|
len = BAD_FUNC_ARG;
|
||||||
|
if (file == NULL)
|
||||||
|
len = WOLFSSL_BAD_FILE;
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
curr = XFTELL(file);
|
curr = XFTELL(file);
|
||||||
if (curr < 0) {
|
if (curr < 0) {
|
||||||
|
11
tests/api.c
11
tests/api.c
@@ -46438,15 +46438,22 @@ static void test_wolfSSL_RSA_print(void)
|
|||||||
static void test_wolfSSL_BIO_get_len(void)
|
static void test_wolfSSL_BIO_get_len(void)
|
||||||
{
|
{
|
||||||
#if defined(OPENSSL_EXTRA) && !defined(NO_BIO)
|
#if defined(OPENSSL_EXTRA) && !defined(NO_BIO)
|
||||||
BIO *bio;
|
BIO *bio = NULL;
|
||||||
const char txt[] = "Some example text to push to the BIO.";
|
const char txt[] = "Some example text to push to the BIO.";
|
||||||
printf(testingFmt, "wolfSSL_BIO_get_len");
|
printf(testingFmt, "wolfSSL_BIO_get_len");
|
||||||
|
|
||||||
|
AssertIntEQ(wolfSSL_BIO_get_len(bio), BAD_FUNC_ARG);
|
||||||
|
|
||||||
AssertNotNull(bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem()));
|
AssertNotNull(bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem()));
|
||||||
|
|
||||||
AssertIntEQ(wolfSSL_BIO_write(bio, txt, sizeof(txt)), sizeof(txt));
|
AssertIntEQ(wolfSSL_BIO_write(bio, txt, sizeof(txt)), sizeof(txt));
|
||||||
AssertIntEQ(wolfSSL_BIO_get_len(bio), sizeof(txt));
|
AssertIntEQ(wolfSSL_BIO_get_len(bio), sizeof(txt));
|
||||||
|
|
||||||
BIO_free(bio);
|
BIO_free(bio);
|
||||||
|
|
||||||
|
AssertNotNull(bio = BIO_new_fd(STDOUT_FILENO, BIO_NOCLOSE));
|
||||||
|
AssertIntEQ(wolfSSL_BIO_get_len(bio), WOLFSSL_BAD_FILE);
|
||||||
|
BIO_free(bio);
|
||||||
|
|
||||||
printf(resultFmt, passed);
|
printf(resultFmt, passed);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user