diff --git a/servers/slapd/overlays/ppolicy.c b/servers/slapd/overlays/ppolicy.c index 820905e9b1bd7b3dff74bb096b66df5e97202463..3fdcda9f1aeb45469762c83e8922a61da19250de 100644 --- a/servers/slapd/overlays/ppolicy.c +++ b/servers/slapd/overlays/ppolicy.c @@ -2305,6 +2305,8 @@ ppolicy_db_init( pwcons++; } + ov_count++; + return 0; } @@ -2314,7 +2316,6 @@ ppolicy_db_open( ConfigReply *cr ) { - ov_count++; return overlay_register_control( be, LDAP_CONTROL_PASSWORDPOLICYREQUEST ); } @@ -2324,16 +2325,10 @@ ppolicy_db_close( ConfigReply *cr ) { - slap_overinst *on = (slap_overinst *) be->bd_info; - pp_info *pi = on->on_bi.bi_private; - #ifdef SLAP_CONFIG_DELETE overlay_unregister_control( be, LDAP_CONTROL_PASSWORDPOLICYREQUEST ); #endif /* SLAP_CONFIG_DELETE */ - free( pi->def_policy.bv_val ); - free( pi ); - return 0; } @@ -2343,6 +2338,13 @@ ppolicy_db_destroy( ConfigReply *cr ) { + slap_overinst *on = (slap_overinst *) be->bd_info; + pp_info *pi = on->on_bi.bi_private; + + on->on_bi.bi_private = NULL; + free( pi->def_policy.bv_val ); + free( pi ); + ov_count--; if ( ov_count <=0 && pwcons ) { pw_conn *pwc = pwcons;