]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
decoder: fix Coverity 1473236 & 1473386: resource leaks
authorPauli <ppzgs1@gmail.com>
Thu, 18 Mar 2021 03:09:09 +0000 (13:09 +1000)
committerPauli <ppzgs1@gmail.com>
Sat, 20 Mar 2021 00:08:00 +0000 (10:08 +1000)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14596)

crypto/encode_decode/decoder_pkey.c

index 38764b418b6a65f500170607fc37d4d166351b21..08deb2d08863fdac90225445ee15189a027ffd44 100644 (file)
@@ -312,6 +312,7 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
         EVP_KEYMGMT_free(keymgmt);
     }
     sk_EVP_KEYMGMT_free(keymgmts);
+    keymgmts = NULL;
 
     /*
      * Finally, find all decoders that have any keymgmt of the collected
@@ -325,6 +326,7 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
         OSSL_DECODER_do_all_provided(libctx,
                                      collect_decoder, &collect_decoder_data);
         sk_OPENSSL_CSTRING_free(names);
+        names = NULL;
 
         if (collect_decoder_data.error_occurred)
             goto err;
@@ -343,6 +345,9 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
     ok = 1;
  err:
     decoder_clean_pkey_construct_arg(process_data);
+    sk_EVP_KEYMGMT_pop_free(keymgmts, EVP_KEYMGMT_free);
+    sk_OPENSSL_CSTRING_free(names);
+
     return ok;
 }