summaryrefslogtreecommitdiffstats
path: root/crypto/encode_decode
diff options
context:
space:
mode:
authorPetr Gotthard <petr.gotthard@advantech-bb.cz>2020-11-22 17:50:53 +0100
committerRichard Levitte <levitte@openssl.org>2020-11-24 12:10:40 +0100
commit223652548d295650ad2dfc7052a0b4abd94c65ae (patch)
treefd6bde4162787b5efccb45dfa35e764035c3d005 /crypto/encode_decode
parentc150a9485772bd4b1bdf144c9fa26043a8a24d65 (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.c2
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)