From: Howard Chu Date: Fri, 19 May 2023 15:37:14 +0000 (+0100) Subject: ITS#9952 libldap: use atexit for TLS teardown X-Git-Tag: OPENLDAP_REL_ENG_2_5_17~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f87a709479dfdd3361c47d3e906fe25174ea964;p=thirdparty%2Fopenldap.git ITS#9952 libldap: use atexit for TLS teardown --- diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c index 3a81790dcf..b9915533bd 100644 --- a/libraries/libldap/init.c +++ b/libraries/libldap/init.c @@ -544,9 +544,6 @@ ldap_int_destroy_global_options(void) gopts->ldo_def_sasl_authcid = NULL; } #endif -#ifdef HAVE_TLS - ldap_int_tls_destroy( gopts ); -#endif } /* diff --git a/libraries/libldap/tls2.c b/libraries/libldap/tls2.c index 4a5d42b297..f9dcbfc8d7 100644 --- a/libraries/libldap/tls2.c +++ b/libraries/libldap/tls2.c @@ -160,6 +160,14 @@ ldap_pvt_tls_destroy( void ) tls_imp->ti_tls_destroy(); } +static void +ldap_exit_tls_destroy( void ) +{ + struct ldapoptions *lo = LDAP_INT_GLOBAL_OPT(); + + ldap_int_tls_destroy( lo ); +} + /* * Initialize a particular TLS implementation. * Called once per implementation. @@ -168,6 +176,7 @@ static int tls_init(tls_impl *impl, int do_threads ) { static int tls_initialized = 0; + int rc; if ( !tls_initialized++ ) { #ifdef LDAP_R_COMPILE @@ -183,7 +192,10 @@ tls_init(tls_impl *impl, int do_threads ) #endif } - return impl->ti_tls_init(); + rc = impl->ti_tls_init(); + + atexit( ldap_exit_tls_destroy ); + return rc; } /*