diff options
author | Tomas Mraz <tomas@openssl.org> | 2022-04-06 10:03:22 +0200 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2022-04-11 11:46:04 +0200 |
commit | 444513d0b7eace7cf9681dcc222606822d17e71d (patch) | |
tree | ba0cd8a847141a52f5736978c81b010aff47bb64 /providers/implementations | |
parent | aea2d74bdce61c8aaa942cf03fb1ca9761e9f3a8 (diff) |
sm2: Allow setting 0 length SM2 dist ID param
Fixes #18022
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18052)
(cherry picked from commit 2904d0a2ae0ec6ce23d5cec66ce8c7bdb005d4e5)
Diffstat (limited to 'providers/implementations')
-rw-r--r-- | providers/implementations/signature/sm2_sig.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/providers/implementations/signature/sm2_sig.c b/providers/implementations/signature/sm2_sig.c index 3c700ac887..4934dd3513 100644 --- a/providers/implementations/signature/sm2_sig.c +++ b/providers/implementations/signature/sm2_sig.c @@ -430,7 +430,7 @@ static int sm2sig_set_ctx_params(void *vpsm2ctx, const OSSL_PARAM params[]) p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_DIST_ID); if (p != NULL) { void *tmp_id = NULL; - size_t tmp_idlen; + size_t tmp_idlen = 0; /* * If the 'z' digest has already been computed, the ID is set too late @@ -438,7 +438,8 @@ static int sm2sig_set_ctx_params(void *vpsm2ctx, const OSSL_PARAM params[]) if (!psm2ctx->flag_compute_z_digest) return 0; - if (!OSSL_PARAM_get_octet_string(p, &tmp_id, 0, &tmp_idlen)) + if (p->data_size != 0 + && !OSSL_PARAM_get_octet_string(p, &tmp_id, 0, &tmp_idlen)) return 0; OPENSSL_free(psm2ctx->id); psm2ctx->id = tmp_id; |