Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
openldap2-client.33990
0224-ITS-8648-init-SASL-library-in-global-init....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0224-ITS-8648-init-SASL-library-in-global-init.patch of Package openldap2-client.33990
From e1968bd5428526cf0daac6cc5128b7b247c5f69c Mon Sep 17 00:00:00 2001 From: Ryan Tandy <ryan@nardis.ca> Date: Fri, 5 May 2017 03:08:07 +0000 Subject: [PATCH] ITS#8648 init SASL library in global init --- libraries/libldap/cyrus.c | 17 +++-------------- libraries/libldap/init.c | 6 ++++++ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/libraries/libldap/cyrus.c b/libraries/libldap/cyrus.c index 5860182e18..9581def675 100644 --- a/libraries/libldap/cyrus.c +++ b/libraries/libldap/cyrus.c @@ -69,11 +69,11 @@ static const sasl_callback_t client_callbacks[] = { { SASL_CB_LIST_END, NULL, NULL } }; +/* + * ldap_int_initialize is responsible for calling this only once. + */ int ldap_int_sasl_init( void ) { - /* XXX not threadsafe */ - static int sasl_initialized = 0; - #ifdef HAVE_SASL_VERSION /* stringify the version number, sasl.h doesn't do it for us */ #define VSTR0(maj, min, pat) #maj "." #min "." #pat @@ -96,9 +96,6 @@ int ldap_int_sasl_init( void ) } } #endif - if ( sasl_initialized ) { - return 0; - } /* SASL 2 takes care of its own memory completely internally */ #if SASL_VERSION_MAJOR < 2 && !defined(CSRIMALLOC) @@ -118,7 +115,6 @@ int ldap_int_sasl_init( void ) #endif if ( sasl_client_init( NULL ) == SASL_OK ) { - sasl_initialized = 1; return 0; } @@ -329,11 +325,6 @@ ldap_int_sasl_open( return ld->ld_errno; } - if ( ldap_int_sasl_init() ) { - ld->ld_errno = LDAP_LOCAL_ERROR; - return ld->ld_errno; - } - #if SASL_VERSION_MAJOR >= 2 rc = sasl_client_new( "ldap", host, NULL, NULL, client_callbacks, 0, &ctx ); @@ -913,8 +904,6 @@ int ldap_int_sasl_get_option( LDAP *ld, int option, void *arg ) { if ( option == LDAP_OPT_X_SASL_MECHLIST ) { - if ( ldap_int_sasl_init() ) - return -1; *(char ***)arg = (char **)sasl_global_listmech(); return 0; } diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c index f9901d1fce..bbdc1e7da1 100644 --- a/libraries/libldap/init.c +++ b/libraries/libldap/init.c @@ -658,6 +658,12 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl ) if ( ldap_int_tblsize == 0 ) ldap_int_ip_init(); #endif +#ifdef HAVE_CYRUS_SASL + if ( ldap_int_sasl_init() != 0 ) { + return; + } +#endif + ldap_int_initialize_global_options(gopts, dbglvl); if( getenv("LDAPNOINIT") != NULL ) { -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor