]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9678 slapadd: avoid destroying configDB prematurely
authorHoward Chu <hyc@openldap.org>
Tue, 14 Sep 2021 19:01:47 +0000 (20:01 +0100)
committerHoward Chu <hyc@openldap.org>
Tue, 14 Sep 2021 19:01:47 +0000 (20:01 +0100)
servers/slapd/bconfig.c

index 8e59b2123dd170a8c69ff9f357c19004f1ebf7f4..1c4f86867556a192ebd45938bd5f4cf67195e009 100644 (file)
@@ -5565,6 +5565,8 @@ config_add_oc( ConfigOCs **cop, CfEntryInfo *last, Entry *e, ConfigArgs *ca )
        return rc;
 }
 
+static BackendDB *configDB;            /* only set by slapadd */
+
 /* Parse an LDAP entry into config directives */
 static int
 config_add_internal( CfBackInfo *cfb, Entry *e, ConfigArgs *ca, SlapReply *rs,
@@ -5911,7 +5913,7 @@ ok:
 done:
        if ( rc ) {
                if ( (coptr->co_type == Cft_Database) && ca->be ) {
-                       if ( ca->be != frontendDB )
+                       if ( ca->be != frontendDB && ca->be != configDB )
                                backend_destroy_one( ca->be, 1 );
                } else if ( (coptr->co_type == Cft_Overlay) && ca->bi ) {
                        overlay_destroy_one( ca->be, (slap_overinst *)ca->bi );
@@ -7885,6 +7887,7 @@ config_tool_entry_open( BackendDB *be, int mode )
        CfBackInfo *cfb = be->be_private;
        BackendInfo *bi = cfb->cb_db.bd_info;
 
+       configDB = be;
        if ( bi && bi->bi_tool_entry_open )
                return bi->bi_tool_entry_open( &cfb->cb_db, mode );
        else