From: Pauli Date: Mon, 9 Dec 2024 02:03:03 +0000 (+1100) Subject: Clear param array to ensure it's initialised properly X-Git-Tag: openssl-3.5.0-alpha1~542 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5510d96f82a07d6245ffb817f1315fe515df7b94;p=thirdparty%2Fopenssl.git Clear param array to ensure it's initialised properly Reviewed-by: Tomas Mraz Reviewed-by: Todd Short Reviewed-by: Tom Cosgrove Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/26339) --- diff --git a/test/evp_test.c b/test/evp_test.c index abd2933791e..56ae79cd719 100644 --- a/test/evp_test.c +++ b/test/evp_test.c @@ -2220,28 +2220,27 @@ static int encapsulate(EVP_TEST *t, EVP_PKEY_CTX *ctx, const char *op, KEM_DATA *kdata = t->data; unsigned char *wrapped = NULL, *secret = NULL; size_t wrappedlen = 0, secretlen = 0; - OSSL_PARAM params[10] = { OSSL_PARAM_END }; + OSSL_PARAM params[10]; size_t params_n = 0; + /* Reserve space for the terminator and possibly IKME */ + const size_t params_max = OSSL_NELEM(params) - 1 - (kdata->entropy != NULL); if (sk_OPENSSL_STRING_num(kdata->init_ctrls) > 0) - if (ctrl2params(t, kdata->init_ctrls, NULL, params, - OSSL_NELEM(params) - 1, ¶ms_n)) + if (ctrl2params(t, kdata->init_ctrls, NULL, params, params_max, + ¶ms_n)) goto err; /* We don't expect very many controls here */ - if (params_n >= 9) { - TEST_error("Too many encapsulate test case parameters %zd", params_n); + if (!TEST_size_t_lt(params_n, params_max)) goto err; - } - if (kdata->entropy != NULL) { + if (kdata->entropy != NULL) /* Input key material a.k.a entropy */ - params[params_n] = + params[params_n++] = OSSL_PARAM_construct_octet_string(OSSL_KEM_PARAM_IKME, kdata->entropy, kdata->entropylen); - params[params_n + 1] = OSSL_PARAM_construct_end(); - } + params[params_n] = OSSL_PARAM_construct_end(); if (EVP_PKEY_encapsulate_init(ctx, params) <= 0) { t->err = "TEST_ENCAPSULATE_INIT_ERROR";