]> git.sur5r.net Git - openldap/commitdiff
ITS#7906 better fix
authorHoward Chu <hyc@openldap.org>
Wed, 6 Aug 2014 02:36:30 +0000 (19:36 -0700)
committerHoward Chu <hyc@openldap.org>
Wed, 6 Aug 2014 02:36:30 +0000 (19:36 -0700)
don't free pwcons unless we're actually destroying this DB

servers/slapd/overlays/ppolicy.c

index d6b8ac2d1a59dabcb467499efecf8fab42c0ca28..25b14312d65dfba3abcb995809c82b888d95be0a 100644 (file)
@@ -2331,7 +2331,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;
@@ -2339,10 +2350,6 @@ ppolicy_close(
                pwc--;
                ch_free( pwc );
        }
-       free( pi->def_policy.bv_val );
-       free( pi );
-
-       return 0;
 }
 
 static char *extops[] = {
@@ -2384,6 +2391,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;