diff options
Diffstat (limited to 'providers')
-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 99460edfce..3de42f496e 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; |