diff options
author | Tomas Mraz <tomas@openssl.org> | 2023-09-04 11:10:42 +0200 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2023-10-18 18:08:53 +0200 |
commit | f0c3bb1ac11fb25659f0b88a769d8a10edf82355 (patch) | |
tree | d2c990cb588a3792141eecdc55723d862d540afc | |
parent | 339bbcd70c1d135b7cc064e2ce001bdb22fe702b (diff) |
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 <levitte@openssl.org>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
(Merged from https://github.com/openssl/openssl/pull/22334)
(cherry picked from commit 15a39e7025e0ed4e31664c499894006e41582068)
-rw-r--r-- | crypto/param_build_set.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/crypto/param_build_set.c b/crypto/param_build_set.c index e26ce15500..f205d10193 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; } } |