From 269a02fbb332da8faf6c2a614d45d5b5018816d1 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 28 May 2015 16:39:47 +0200 Subject: [PATCH 11/14] MINOR: ssl: add a destructor to free allocated SSL ressources Using valgrind or another memory leak tracking tool is easier when the memory internally allocated by OpenSSL is cleanly released at shutdown. (cherry picked from commit d3a23c3eb8c0950d26204568a133207099923494) --- src/ssl_sock.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/ssl_sock.c b/src/ssl_sock.c index d0f4d01..a78fc6a 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -4717,6 +4717,42 @@ static void __ssl_sock_init(void) cfg_register_keywords(&cfg_kws); } +__attribute__((destructor)) +static void __ssl_sock_deinit(void) +{ +#ifndef OPENSSL_NO_DH + if (local_dh_1024) { + DH_free(local_dh_1024); + local_dh_1024 = NULL; + } + + if (local_dh_2048) { + DH_free(local_dh_2048); + local_dh_2048 = NULL; + } + + if (local_dh_4096) { + DH_free(local_dh_4096); + local_dh_4096 = NULL; + } + + if (local_dh_8192) { + DH_free(local_dh_8192); + local_dh_8192 = NULL; + } +#endif + + ERR_remove_state(0); + ERR_free_strings(); + + EVP_cleanup(); + +#if OPENSSL_VERSION_NUMBER >= 0x00907000L + CRYPTO_cleanup_all_ex_data(); +#endif +} + + /* * Local variables: * c-indent-level: 8 -- 2.0.5