Commit 57887e7aed for openssl.org

commit 57887e7aed33d465c09f2c876b8f0f5c4520e1be
Author: Alberto Maschietto <albertomaschietto9@gmail.com>
Date:   Thu Aug 20 18:43:56 2026 +0400

    ml_dsa_mu_prov.c: initialize ML-DSA-MU before empty-message finalization

    The ML-DSA-MU digest context was initialized only by mu_update().
    Finalizing an empty pure ML-DSA message before any update left
    ctx->mdctx NULL and crashed in ossl_ml_dsa_mu_finalize().  Call
    check_init() in mu_final() before finalization, to get the same lazy
    initialization as the update path.

    Fixes: 175cda569df9 "ML-DSA: Add a digest that can calculate external mu."
    Resolves: https://github.com/openssl/openssl/issues/32445
    Assisted-by: Claude Code
    Reviewed-by: Mounir Idrassi <mounir.idrassi@idrix.fr>
    Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
    Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
    Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
    Merge-date: Mon Oct 19 11:08:02 2026
    Merged-from: https://github.com/openssl/openssl/pull/32447

diff --git a/providers/implementations/digests/ml_dsa_mu_prov.c b/providers/implementations/digests/ml_dsa_mu_prov.c
index 0f1866ed0c..50712c0ed4 100644
--- a/providers/implementations/digests/ml_dsa_mu_prov.c
+++ b/providers/implementations/digests/ml_dsa_mu_prov.c
@@ -319,7 +319,7 @@ static int mu_final(void *vctx, uint8_t *out, size_t *outl, size_t outsz)
         if (outsz < len)
             return 0;

-        if (ctx->remaining != 0)
+        if (ctx->remaining != 0 || !check_init(ctx))
             return 0;
         if (!ossl_ml_dsa_mu_finalize(ctx->mdctx, out, len))
             return 0;