param bld: avoid freeing the param builder structure on error paths.
authorPauli <paul.dale@oracle.com>
Sun, 26 Apr 2020 21:32:43 +0000 (07:32 +1000)
committerPauli <paul.dale@oracle.com>
Thu, 30 Apr 2020 10:21:16 +0000 (20:21 +1000)
The param builder was recently modified so that it doesn't free the passed in
param builder structure.  Some of the error paths didn't get synced up with this
change and resulted in double frees.

Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/11651)

crypto/param_build.c

index c4624ec33ef61c3e786f2819b65417647523fc99..43b194bceab53418db6b9406e2c518d28b81b1ec 100644 (file)
@@ -361,14 +361,12 @@ OSSL_PARAM *OSSL_PARAM_BLD_to_param(OSSL_PARAM_BLD *bld)
         if (s == NULL) {
             CRYPTOerr(CRYPTO_F_OSSL_PARAM_BLD_TO_PARAM,
                       CRYPTO_R_SECURE_MALLOC_FAILURE);
-            OPENSSL_free(bld);
             return NULL;
         }
     }
     params = OPENSSL_malloc(total);
     if (params == NULL) {
         CRYPTOerr(CRYPTO_F_OSSL_PARAM_BLD_TO_PARAM, ERR_R_MALLOC_FAILURE);
-        OPENSSL_free(bld);
         OPENSSL_secure_free(s);
         return NULL;
     }