]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
OSSL_PARAM_BLD and BIGNUM; ensure at least one byte is allocated
authorRichard Levitte <levitte@openssl.org>
Tue, 10 Jan 2023 07:27:44 +0000 (08:27 +0100)
committerRichard Levitte <levitte@openssl.org>
Wed, 11 Jan 2023 22:38:13 +0000 (23:38 +0100)
A zero BIGNUM contains zero bytes, while OSSL_PARAMs with an INTEGER (or
UNSIGNED INTEGER) data type are expected to have at least one data byte
allocated, containing a zero.  This wasn't handled correctly.

Fixes #20011

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20013)

crypto/param_build.c

index f00c0aa8096cdfc1f967ee2b833957705bc98952..ae215ff5aad608cb485a3c5ed6a315efcd47086c 100644 (file)
@@ -218,6 +218,10 @@ static int push_BN(OSSL_PARAM_BLD *bld, const char *key,
         }
         if (BN_get_flags(bn, BN_FLG_SECURE) == BN_FLG_SECURE)
             secure = 1;
+
+        /* The BIGNUM is zero, we must transfer at least one byte */
+        if (sz == 0)
+            sz++;
     }
     pd = param_push(bld, key, sz, sz, type, secure);
     if (pd == NULL)