]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Clear param array to ensure it's initialised properly
authorPauli <ppzgs1@gmail.com>
Mon, 9 Dec 2024 02:03:03 +0000 (13:03 +1100)
committerTomas Mraz <tomas@openssl.org>
Fri, 14 Feb 2025 09:50:58 +0000 (10:50 +0100)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Todd Short <todd.short@me.com>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26339)

test/evp_test.c

index abd2933791ec1b4e455b13b83931595ceea9c05d..56ae79cd7198a298fed0206c8f7f19a72a026a3b 100644 (file)
@@ -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, &params_n))
+        if (ctrl2params(t, kdata->init_ctrls, NULL, params, params_max,
+                        &params_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";