diff options
author | Petr Gotthard <petr.gotthard@advantech-bb.cz> | 2020-11-22 17:50:53 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2020-11-24 12:10:40 +0100 |
commit | 223652548d295650ad2dfc7052a0b4abd94c65ae (patch) | |
tree | fd6bde4162787b5efccb45dfa35e764035c3d005 /crypto/encode_decode | |
parent | c150a9485772bd4b1bdf144c9fa26043a8a24d65 (diff) |
Fix double-free in decoder_pkey.c
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)
Diffstat (limited to 'crypto/encode_decode')
-rw-r--r-- | crypto/encode_decode/decoder_pkey.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/encode_decode/decoder_pkey.c b/crypto/encode_decode/decoder_pkey.c index 3a765c5986..016d6047bd 100644 --- a/crypto/encode_decode/decoder_pkey.c +++ b/crypto/encode_decode/decoder_pkey.c @@ -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) |