]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
* mod_ssl: fix small memory leak in ssl_init_server_certs when ECDH is used.
authorJan Kaluža <jkaluza@apache.org>
Fri, 13 Mar 2015 07:32:46 +0000 (07:32 +0000)
committerJan Kaluža <jkaluza@apache.org>
Fri, 13 Mar 2015 07:32:46 +0000 (07:32 +0000)
SSL_CTX_set_tmp_ecdh increases reference count, so we have to call EC_KEY_free,
otherwise eckey will not be freed.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1666363 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/ssl_engine_init.c

index b44e01f1c27043db21958871cd634a5da0d7b751..728ee01693685b43670dfe64b2086054c2d0c2ad 100644 (file)
@@ -982,7 +982,7 @@ static apr_status_t ssl_init_server_certs(server_rec *s,
 #ifdef HAVE_ECC
     EC_GROUP *ecparams;
     int nid;
-    EC_KEY *eckey;
+    EC_KEY *eckey = NULL;
 #endif
 #ifndef HAVE_SSL_CONF_CMD
     SSL *ssl;
@@ -1151,10 +1151,11 @@ static apr_status_t ssl_init_server_certs(server_rec *s,
 #if defined(SSL_CTX_set_ecdh_auto)
         SSL_CTX_set_ecdh_auto(mctx->ssl_ctx, 1);
 #else
-        SSL_CTX_set_tmp_ecdh(mctx->ssl_ctx,
-                             EC_KEY_new_by_curve_name(NID_X9_62_prime256v1));
+        eckey = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
+        SSL_CTX_set_tmp_ecdh(mctx->ssl_ctx, eckey);
 #endif
     }
+    EC_KEY_free(eckey);
 #endif
 
     return APR_SUCCESS;