Skip to content

Commit

Permalink
openssl: don’t call CRYTPO_cleanup_all_ex_data
Browse files Browse the repository at this point in the history
The OpenSSL function CRYTPO_cleanup_all_ex_data() cannot be called
multiple times without crashing - and other libs might call it! We
basically cannot call it without risking a crash. The function is a
no-op since OpenSSL 1.1.0.

Not calling this function only risks a small memory leak with OpenSSL <
1.1.0.

Bug: https://curl.haxx.se/mail/lib-2016-09/0045.html
Reported-by: Todd Short
  • Loading branch information
bagder committed Sep 19, 2016
1 parent fb0032a commit de71e68
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 9 deletions.
4 changes: 1 addition & 3 deletions CMakeLists.txt
Expand Up @@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
Expand Down Expand Up @@ -775,8 +775,6 @@ if(CMAKE_USE_OPENSSL)
check_symbol_exists(RAND_status "${CURL_INCLUDES}" HAVE_RAND_STATUS)
check_symbol_exists(RAND_screen "${CURL_INCLUDES}" HAVE_RAND_SCREEN)
check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
check_symbol_exists(CRYPTO_cleanup_all_ex_data "${CURL_INCLUDES}"
HAVE_CRYPTO_CLEANUP_ALL_EX_DATA)
if(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
set(USE_OPENSSL 1)
endif(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
Expand Down
1 change: 0 additions & 1 deletion configure.ac
Expand Up @@ -1639,7 +1639,6 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
RAND_screen \
RAND_egd \
ENGINE_cleanup \
CRYPTO_cleanup_all_ex_data \
SSL_get_shutdown \
SSLv2_client_method )

Expand Down
5 changes: 0 additions & 5 deletions lib/vtls/openssl.c
Expand Up @@ -748,11 +748,6 @@ void Curl_ossl_cleanup(void)
ENGINE_cleanup();
#endif

#ifdef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA
/* Free OpenSSL ex_data table */
CRYPTO_cleanup_all_ex_data();
#endif

/* Free OpenSSL error strings */
ERR_free_strings();

Expand Down

0 comments on commit de71e68

Please sign in to comment.