From: Howard Chu Date: Thu, 30 Jul 2020 16:53:25 +0000 (+0100) Subject: ITS#9302 fix pwdFailireTime mutex scope X-Git-Tag: OPENLDAP_REL_ENG_2_4_51~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=64e1cdfcf53262d19fa5c7c65002e9e06ae72f45;p=thirdparty%2Fopenldap.git ITS#9302 fix pwdFailireTime mutex scope --- diff --git a/servers/slapd/overlays/ppolicy.c b/servers/slapd/overlays/ppolicy.c index 5576ab8075..d3a7b612e1 100644 --- a/servers/slapd/overlays/ppolicy.c +++ b/servers/slapd/overlays/ppolicy.c @@ -56,6 +56,7 @@ typedef struct pp_info { int hash_passwords; /* transparently hash cleartext pwds */ int forward_updates; /* use frontend for policy state updates */ int send_netscape_controls; /* send netscape password controls */ + ldap_pvt_thread_mutex_t pwdFailureTime_mutex; } pp_info; /* Our per-connection info - note, it is not per-instance, it is @@ -211,7 +212,6 @@ static struct schema_info pwd_UsSchema[] = { }; static ldap_pvt_thread_mutex_t chk_syntax_mutex; -static ldap_pvt_thread_mutex_t pwdFailureTime_mutex; enum { PPOLICY_DEFAULT = 1, @@ -1000,13 +1000,13 @@ ppolicy_bind_response( Operation *op, SlapReply *rs ) goto locked; } - ldap_pvt_thread_mutex_lock( &pwdFailureTime_mutex ); + ldap_pvt_thread_mutex_lock( &pi->pwdFailureTime_mutex ); op->o_bd->bd_info = (BackendInfo *)on->on_info; rc = be_entry_get_rw( op, &op->o_req_ndn, NULL, NULL, 0, &e ); op->o_bd->bd_info = bi; if ( rc != LDAP_SUCCESS ) { - ldap_pvt_thread_mutex_unlock( &pwdFailureTime_mutex ); + ldap_pvt_thread_mutex_unlock( &pi->pwdFailureTime_mutex ); return SLAP_CB_CONTINUE; } @@ -1330,7 +1330,7 @@ locked: op->o_callback->sc_cleanup = ppolicy_ctrls_cleanup; } op->o_bd->bd_info = bi; - ldap_pvt_thread_mutex_unlock( &pwdFailureTime_mutex ); + ldap_pvt_thread_mutex_unlock( &pi->pwdFailureTime_mutex ); return SLAP_CB_CONTINUE; } @@ -2423,6 +2423,7 @@ ppolicy_db_init( ) { slap_overinst *on = (slap_overinst *) be->bd_info; + pp_info *pi; if ( SLAP_ISGLOBALOVERLAY( be ) ) { /* do not allow slapo-ppolicy to be global by now (ITS#5858) */ @@ -2467,7 +2468,7 @@ ppolicy_db_init( } } - on->on_bi.bi_private = ch_calloc( sizeof(pp_info), 1 ); + pi = on->on_bi.bi_private = ch_calloc( sizeof(pp_info), 1 ); if ( !pwcons ) { /* accommodate for c_conn_idx == -1 */ @@ -2477,7 +2478,7 @@ ppolicy_db_init( ov_count++; - ldap_pvt_thread_mutex_init( &pwdFailureTime_mutex ); + ldap_pvt_thread_mutex_init( &pi->pwdFailureTime_mutex ); return 0; } @@ -2514,6 +2515,7 @@ ppolicy_db_destroy( pp_info *pi = on->on_bi.bi_private; on->on_bi.bi_private = NULL; + ldap_pvt_thread_mutex_destroy( &pi->pwdFailureTime_mutex ); free( pi->def_policy.bv_val ); free( pi ); @@ -2524,7 +2526,6 @@ ppolicy_db_destroy( pwc--; ch_free( pwc ); } - ldap_pvt_thread_mutex_destroy( &pwdFailureTime_mutex ); return 0; }