From: Howard Chu Date: Wed, 6 Aug 2014 02:36:30 +0000 (-0700) Subject: ITS#7906 better fix X-Git-Tag: OPENLDAP_REL_ENG_2_4_40~56 X-Git-Url: https://git.sur5r.net/?p=openldap;a=commitdiff_plain;h=d6fa2ee4a0cd0a9fc3fcf01a4f362fa153b1e2fb ITS#7906 better fix don't free pwcons unless we're actually destroying this DB --- diff --git a/servers/slapd/overlays/ppolicy.c b/servers/slapd/overlays/ppolicy.c index 98221b86d4..1ebb02333a 100644 --- a/servers/slapd/overlays/ppolicy.c +++ b/servers/slapd/overlays/ppolicy.c @@ -2327,7 +2327,18 @@ ppolicy_close( overlay_unregister_control( be, LDAP_CONTROL_PASSWORDPOLICYREQUEST ); #endif /* SLAP_CONFIG_DELETE */ - /* Perhaps backover should provide bi_destroy hooks... */ + free( pi->def_policy.bv_val ); + free( pi ); + + return 0; +} + +static int +ppolicy_db_destroy( + BackendDB *be, + ConfigReply *cr +) +{ ov_count--; if ( ov_count <=0 && pwcons ) { pw_conn *pwc = pwcons; @@ -2335,10 +2346,6 @@ ppolicy_close( pwc--; ch_free( pwc ); } - free( pi->def_policy.bv_val ); - free( pi ); - - return 0; } static char *extops[] = { @@ -2380,6 +2387,7 @@ int ppolicy_initialize() ppolicy.on_bi.bi_db_init = ppolicy_db_init; ppolicy.on_bi.bi_db_open = ppolicy_db_open; ppolicy.on_bi.bi_db_close = ppolicy_close; + ppolicy.on_bi.bi_db_destroy = ppolicy_db_destroy; ppolicy.on_bi.bi_op_add = ppolicy_add; ppolicy.on_bi.bi_op_bind = ppolicy_bind;