]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
crypto/ml_dsa: fix public_from_private() error path to return failure
authorrodeka <rodeka.core@ya.ru>
Tue, 16 Sep 2025 17:38:17 +0000 (20:38 +0300)
committerPauli <paul.dale@oracle.com>
Wed, 17 Sep 2025 23:03:48 +0000 (09:03 +1000)
The error label returned success (1) even on failure. Make it return failure (0) instead.
Fixes #28562

CLA: trivial

Reviewed-by: Todd Short <todd.short@me.com>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/28576)

crypto/ml_dsa/ml_dsa_key.c

index e2cb399098b7ba8541d3e2cf5de471f6fc50f5aa..94f906a9fc1b79b1139fdcde1eb525c50a2b40b1 100644 (file)
@@ -319,6 +319,7 @@ int ossl_ml_dsa_key_has(const ML_DSA_KEY *key, int selection)
 static int public_from_private(const ML_DSA_KEY *key, EVP_MD_CTX *md_ctx,
                                VECTOR *t1, VECTOR *t0)
 {
+    int ret = 0;
     const ML_DSA_PARAMS *params = key->params;
     uint32_t k = (uint32_t)params->k, l = (uint32_t)params->l;
     POLY *polys;
@@ -351,9 +352,10 @@ static int public_from_private(const ML_DSA_KEY *key, EVP_MD_CTX *md_ctx,
 
     /* Zeroize secret */
     vector_zero(&s1_ntt);
+    ret = 1;
 err:
     OPENSSL_free(polys);
-    return 1;
+    return ret;
 }
 
 int ossl_ml_dsa_key_public_from_private(ML_DSA_KEY *key)