]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
cms: free PKEY_CTX
authorPauli <pauli@openssl.org>
Mon, 14 Jun 2021 11:22:55 +0000 (21:22 +1000)
committerPauli <pauli@openssl.org>
Tue, 15 Jun 2021 08:59:44 +0000 (18:59 +1000)
Preventing a memory leak.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/15731)

crypto/cms/cms_ec.c

index ca66d9fcf8be2f88919fa130c01cfcf990d72e59..87ce88e743d3ec374283178f6d171b14db3bf03e 100644 (file)
@@ -38,6 +38,7 @@ static EVP_PKEY *pkey_type2param(int ptype, const void *pval,
             goto err;
         }    
         OSSL_DECODER_CTX_free(ctx);
+        return pkey;
     } else if (ptype == V_ASN1_OBJECT) {
         const ASN1_OBJECT *poid = pval;
         char groupname[OSSL_MAX_NAME_SIZE];
@@ -53,12 +54,12 @@ static EVP_PKEY *pkey_type2param(int ptype, const void *pval,
         }
         if (EVP_PKEY_paramgen(pctx, &pkey) <= 0)
             goto err;
-    } else {
-        ERR_raise(ERR_LIB_CMS, CMS_R_DECODE_ERROR);
-        goto err;
+        EVP_PKEY_CTX_free(pctx);
+        return pkey;
     }
 
-    return pkey;
+    ERR_raise(ERR_LIB_CMS, CMS_R_DECODE_ERROR);
+    return NULL;
 
  err:
     EVP_PKEY_free(pkey);