Commit f666172c46 for openssl.org

commit f666172c4651d5a0a5f6425f899b3ef1a1b2eaac
Author: Greensi7 <adam.tabak04@gmail.com>
Date:   Thu Aug 13 23:17:46 2026 +0200

    Fix memory leak in ossl_decoder_instance_new_forprov()

    On failed memory allocation in decoder_lib.c and ossl_decoder_instance_new_forprov()
    allocation of return value OSSL_DECODER_INSTANCE* is not checked
    causing decoderctx to leak.

    Found by : store fuzzer (MFAIL-test)

    Reviewed-by: Jakub Zelenka <jakub.zelenka@openssl.foundation>
    Reviewed-by: Neil Horman <nhorman@openssl.org>
    MergeDate: Tue Sep 15 14:20:03 2026
    (Merged from https://github.com/openssl/openssl/pull/32413)

diff --git a/crypto/encode_decode/decoder_lib.c b/crypto/encode_decode/decoder_lib.c
index 7be00d21a1..3711f2653b 100644
--- a/crypto/encode_decode/decoder_lib.c
+++ b/crypto/encode_decode/decoder_lib.c
@@ -231,6 +231,7 @@ OSSL_DECODER_INSTANCE *
 ossl_decoder_instance_new_forprov(OSSL_DECODER *decoder, void *provctx,
     const char *input_structure)
 {
+    OSSL_DECODER_INSTANCE *decoder_inst = NULL;
     void *decoderctx;

     if (!ossl_assert(decoder != NULL)) {
@@ -251,7 +252,10 @@ ossl_decoder_instance_new_forprov(OSSL_DECODER *decoder, void *provctx,
             return 0;
         }
     }
-    return ossl_decoder_instance_new(decoder, decoderctx);
+    decoder_inst = ossl_decoder_instance_new(decoder, decoderctx);
+    if (decoder_inst == NULL)
+        decoder->freectx(decoderctx);
+    return decoder_inst;
 }

 OSSL_DECODER_INSTANCE *ossl_decoder_instance_new(OSSL_DECODER *decoder,