]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix use-after-free in tls_ctx_use_management_external_key
authorSteffan Karger <steffan@karger.me>
Sun, 7 Oct 2018 10:00:32 +0000 (12:00 +0200)
committerGert Doering <gert@greenie.muc.de>
Sun, 7 Oct 2018 12:03:21 +0000 (14:03 +0200)
Commit 98bfeeb4 changed our openssl backend implementation of
tls_ctx_use_management_external_key() to no longer use
tls_ctx_load_cert_file_and_copy(), but still free'd 'cert'. Which it no
longer should do. Credits go to Arne for spotting the issue (even though
it was missed during the review).

The offending commit is only recently applied to the master branch, so was
never part of a OpenVPN release. For that reason I did not do full impact
analysis.

Signed-off-by: Steffan Karger <steffan@karger.me>
Acked-by: Arne Schwabe <arne@rfc2549.org>
Message-Id: <20181007100032.17060-1-steffan@karger.me>
URL: https://www.mail-archive.com/search?l=mid&q=20181007100032.17060-1-steffan@karger.me
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/ssl_openssl.c

index 9777b86a856bdc5894901aee56b3c1fa69f69a8c..1a66d17880ff8eaf2a2453142303c9814aca3dc7 100644 (file)
@@ -1296,7 +1296,6 @@ tls_ctx_use_management_external_key(struct tls_root_ctx *ctx)
     /* get the public key */
     EVP_PKEY *pkey = X509_get0_pubkey(cert);
     ASSERT(pkey); /* NULL before SSL_CTX_use_certificate() is called */
-    X509_free(cert);
 
     if (EVP_PKEY_id(pkey) == EVP_PKEY_RSA)
     {