do_body: fix heap-use-after-free.
authorPavel Kopyl <p.kopyl@samsung.com>
Sun, 10 Dec 2017 19:57:43 +0000 (22:57 +0300)
committerMatt Caswell <matt@openssl.org>
Wed, 21 Feb 2018 12:29:06 +0000 (12:29 +0000)
The memory pointed to by the 'push' is freed by the
X509_NAME_ENTRY_free() in do_body(). The second time
it is referenced to (indirectly) in certify_cert:X509_REQ_free().

Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4896)

apps/ca.c

index bde3e4438a8142cfe64956fccbddc78573a5fae7..06002adf2d41439a6a78d744d7762018de875f4a 100644 (file)
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -1825,8 +1825,6 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509,
 
             if (push != NULL) {
                 if (!X509_NAME_add_entry(subject, push, -1, 0)) {
-                    if (push != NULL)
-                        X509_NAME_ENTRY_free(push);
                     BIO_printf(bio_err, "Memory allocation failure\n");
                     goto err;
                 }