diff --git a/libraries/libldap/tls.c b/libraries/libldap/tls.c index 6053ef85cb..d7e9e650e9 100644 --- a/libraries/libldap/tls.c +++ b/libraries/libldap/tls.c @@ -809,13 +809,8 @@ ldap_pvt_tls_get_option( LDAP *ld, int option, void *arg ) { struct ldapoptions *lo; - /* Get pointer to global option structure */ - lo = LDAP_INT_GLOBAL_OPT(); - if (NULL == lo) { - return LDAP_NO_MEMORY; - } - if(ld != NULL) { + if( ld != NULL ) { assert( LDAP_VALID( ld ) ); if( !LDAP_VALID( ld ) ) { @@ -823,6 +818,13 @@ ldap_pvt_tls_get_option( LDAP *ld, int option, void *arg ) } lo = &ld->ld_options; + + } else { + /* Get pointer to global option structure */ + lo = LDAP_INT_GLOBAL_OPT(); + if( lo == NULL ) { + return LDAP_NO_MEMORY; + } } switch( option ) { @@ -868,13 +870,7 @@ ldap_pvt_tls_set_option( LDAP *ld, int option, void *arg ) { struct ldapoptions *lo; - /* Get pointer to global option structure */ - lo = LDAP_INT_GLOBAL_OPT(); - if (NULL == lo) { - return LDAP_NO_MEMORY; - } - - if(ld != NULL) { + if( ld != NULL ) { assert( LDAP_VALID( ld ) ); if( !LDAP_VALID( ld ) ) { @@ -882,6 +878,13 @@ ldap_pvt_tls_set_option( LDAP *ld, int option, void *arg ) } lo = &ld->ld_options; + + } else { + /* Get pointer to global option structure */ + lo = LDAP_INT_GLOBAL_OPT(); + if( lo == NULL ) { + return LDAP_NO_MEMORY; + } } switch( option ) { @@ -910,7 +913,7 @@ ldap_pvt_tls_set_option( LDAP *ld, int option, void *arg ) return 0; } - if ( lo != NULL ) { + if ( ld != NULL ) { return -1; } diff --git a/servers/slapd/main.c b/servers/slapd/main.c index 28be1d10d1..1d01179062 100644 --- a/servers/slapd/main.c +++ b/servers/slapd/main.c @@ -358,10 +358,21 @@ int main( int argc, char **argv ) } #ifdef HAVE_TLS - ldap_pvt_tls_init(); + rc = ldap_pvt_tls_init(); + if( rc != 0) { + Debug( LDAP_DEBUG_ANY, + "main: TLS init failed: %d\n", + 0, 0, 0 ); + rc = 1; + SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 ); + goto destroy; + } - if (ldap_pvt_tls_init_def_ctx() != 0) - { + rc = ldap_pvt_tls_init_def_ctx(); + if( rc != 0) { + Debug( LDAP_DEBUG_ANY, + "main: TLS init def ctx failed: %d\n", + 0, 0, 0 ); rc = 1; SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 ); goto destroy;