From 09a22d55122ba3c04ce8114d1ca38e2061d19292 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 14 Sep 2021 20:01:47 +0100 Subject: [PATCH] ITS#9678 slapadd: avoid destroying configDB prematurely --- servers/slapd/bconfig.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 8e59b2123d..1c4f868675 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -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