diff --git a/src/ssl_bn.c b/src/ssl_bn.c index e45e19da50..74eadcead2 100644 --- a/src/ssl_bn.c +++ b/src/ssl_bn.c @@ -516,12 +516,14 @@ WOLFSSL_BIGNUM* wolfSSL_BN_bin2bn(const unsigned char* data, int len, ret = NULL; } else { - /* Don't free bn as we may be returning it. */ + /* Don't free bn as we are returning it. */ bn = NULL; } } else if (data == NULL) { wolfSSL_BN_zero(ret); + /* Don't free bn as we are returning it. */ + bn = NULL; } } diff --git a/tests/api.c b/tests/api.c index 15c2191cfc..d9d328b95d 100644 --- a/tests/api.c +++ b/tests/api.c @@ -61624,6 +61624,11 @@ static int test_wolfSSL_BN_enc_dec(void) ExpectNull(BN_bn2dec(NULL)); ExpectNull(BN_bn2dec(&emptyBN)); + ExpectNotNull(c = BN_bin2bn(NULL, 0, NULL)); + BN_clear(c); + BN_free(c); + c = NULL; + ExpectNotNull(BN_bin2bn(NULL, sizeof(binNum), a)); BN_free(a); a = NULL;