From 15192335c8bbfb78bc02086bcd77a0d82efffbce Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 12 Jan 2023 11:10:01 +0100 Subject: [PATCH] Add a test for public variants of bn2bin() We test with binary input of length 1, length 0, and NULL input with length 0 Reviewed-by: Paul Dale Reviewed-by: Tomas Mraz Reviewed-by: Hugo Landau (Merged from https://github.com/openssl/openssl/pull/20033) --- test/bntest.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/test/bntest.c b/test/bntest.c index b35b53df7e..241765c9f1 100644 --- a/test/bntest.c +++ b/test/bntest.c @@ -2219,6 +2219,36 @@ static int test_mpi(int i) return st; } +static int test_bin2zero(void) +{ + unsigned char input[] = { 0 }; + BIGNUM *zbn = NULL; + int ret = 0; + + if (!TEST_ptr(zbn = BN_new())) + goto err; + +#define zerotest(fn) \ + if (!TEST_ptr(fn(input, 1, zbn)) \ + || !TEST_true(BN_is_zero(zbn)) \ + || !TEST_ptr(fn(input, 0, zbn)) \ + || !TEST_true(BN_is_zero(zbn)) \ + || !TEST_ptr(fn(NULL, 0, zbn)) \ + || !TEST_true(BN_is_zero(zbn))) \ + goto err + + zerotest(BN_bin2bn); + zerotest(BN_signed_bin2bn); + zerotest(BN_lebin2bn); + zerotest(BN_signed_lebin2bn); +#undef zerotest + + ret = 1; + err: + BN_free(zbn); + return ret; +} + static int test_rand(void) { BIGNUM *bn = NULL; @@ -3213,6 +3243,7 @@ int setup_tests(void) ADD_TEST(test_dec2bn); ADD_TEST(test_hex2bn); ADD_TEST(test_asc2bn); + ADD_TEST(test_bin2zero); ADD_ALL_TESTS(test_mpi, (int)OSSL_NELEM(kMPITests)); ADD_ALL_TESTS(test_bn2signed, (int)OSSL_NELEM(kSignedTests_BE)); ADD_TEST(test_negzero);