]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix double-free in decoder_pkey.c
authorPetr Gotthard <petr.gotthard@advantech-bb.cz>
Sun, 22 Nov 2020 16:50:53 +0000 (17:50 +0100)
committerRichard Levitte <levitte@openssl.org>
Tue, 24 Nov 2020 11:10:40 +0000 (12:10 +0100)
Fix for the issue #13472. The decoderctx has to be initialized in every
cycle as its constructor may not be called due to lazy evaluation of
the if-condition.

CLA: trivial

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13473)

crypto/encode_decode/decoder_pkey.c

index 3a765c59863f09093de691e2c6b5654e29954999..016d6047bd274c649e1634d7d7f9447abecf9645 100644 (file)
@@ -267,7 +267,6 @@ static void collect_decoder(OSSL_DECODER *decoder, void *arg)
     size_t i, end_i;
     const OSSL_PROVIDER *prov = OSSL_DECODER_provider(decoder);
     void *provctx = OSSL_PROVIDER_get0_provider_ctx(prov);
-    void *decoderctx = NULL;
 
     if (data->error_occured)
         return;
@@ -279,6 +278,7 @@ static void collect_decoder(OSSL_DECODER *decoder, void *arg)
     end_i = sk_OPENSSL_CSTRING_num(data->names);
     for (i = 0; i < end_i; i++) {
         const char *name = sk_OPENSSL_CSTRING_value(data->names, i);
+        void *decoderctx = NULL;
         OSSL_DECODER_INSTANCE *di = NULL;
 
         if (OSSL_DECODER_is_a(decoder, name)