From: Tomas Mraz Date: Mon, 4 Sep 2023 09:10:42 +0000 (+0200) Subject: ossl_param_build_set_multi_key_bn(): Do not set NULL BIGNUMs X-Git-Tag: openssl-3.2.0-beta1~80 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=15a39e7025e0ed4e31664c499894006e41582068;p=thirdparty%2Fopenssl.git ossl_param_build_set_multi_key_bn(): Do not set NULL BIGNUMs This makes them zeroes otherwise where NULLs actually mean the values aren't present. Fixes #21935 Reviewed-by: Richard Levitte Reviewed-by: Tom Cosgrove (Merged from https://github.com/openssl/openssl/pull/22334) --- diff --git a/crypto/param_build_set.c b/crypto/param_build_set.c index e26ce15500d..f205d101936 100644 --- a/crypto/param_build_set.c +++ b/crypto/param_build_set.c @@ -101,21 +101,22 @@ int ossl_param_build_set_multi_key_bn(OSSL_PARAM_BLD *bld, OSSL_PARAM *params, { int i, sz = sk_BIGNUM_const_num(stk); OSSL_PARAM *p; - + const BIGNUM *bn; if (bld != NULL) { for (i = 0; i < sz && names[i] != NULL; ++i) { - if (!OSSL_PARAM_BLD_push_BN(bld, names[i], - sk_BIGNUM_const_value(stk, i))) + bn = sk_BIGNUM_const_value(stk, i); + if (bn != NULL && !OSSL_PARAM_BLD_push_BN(bld, names[i], bn)) return 0; } return 1; } for (i = 0; i < sz && names[i] != NULL; ++i) { + bn = sk_BIGNUM_const_value(stk, i); p = OSSL_PARAM_locate(params, names[i]); - if (p != NULL) { - if (!OSSL_PARAM_set_BN(p, sk_BIGNUM_const_value(stk, i))) + if (p != NULL && bn != NULL) { + if (!OSSL_PARAM_set_BN(p, bn)) return 0; } }