Commit 4d8763dc authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#6857

parent a93c1fb0
......@@ -6,6 +6,7 @@ OpenLDAP 2.4.25 Engineering
Added slapd ordering for uidNumber and gidNumber (ITS#6852)
Fixed slapd sortval handling (ITS#6845)
Fixed slapd-ldap chain cn=config support (ITS#6837)
Fixed slapd-ldap chain with slapd.conf (ITS#6857)
Fixed slapd-meta deadlock (ITS#6846)
Fixed slapo-sssvlv with multiple requests (ITS#6850)
Build Environment
......
......@@ -1721,20 +1721,17 @@ ldap_chain_db_config(
ldap_chain_t *lc = (ldap_chain_t *)on->on_bi.bi_private;
int rc = SLAP_CONF_UNKNOWN;
if ( lc->lc_common_li == NULL ) {
void *be_private = be->be_private;
ldap_chain_db_init_common( be );
lc->lc_common_li = lc->lc_cfg_li = (ldapinfo_t *)be->be_private;
be->be_private = be_private;
BackendDB db = *be;
ldap_chain_db_init_common( &db );
lc->lc_common_li = lc->lc_cfg_li = (ldapinfo_t *)db.be_private;
}
/* Something for the chain database? */
if ( strncasecmp( argv[ 0 ], "chain-", STRLENOF( "chain-" ) ) == 0 ) {
char *save_argv0 = argv[ 0 ];
BackendInfo *bd_info = be->bd_info;
void *be_private = be->be_private;
ConfigOCs *be_cf_ocs = be->be_cf_ocs;
BackendDB db = *be;
static char *allowed_argv[] = {
/* special: put URI here, so in the meanwhile
* it detects whether a new URI is being provided */
......@@ -1773,14 +1770,14 @@ ldap_chain_db_config(
}
if ( which_argv == 0 ) {
rc = ldap_chain_db_init_one( be );
rc = ldap_chain_db_init_one( &db );
if ( rc != 0 ) {
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
"underlying slapd-ldap initialization failed.\n.",
fname, lineno, 0 );
return 1;
}
lc->lc_cfg_li = be->be_private;
lc->lc_cfg_li = db.be_private;
}
/* TODO: add checks on what other slapd-ldap(5) args
......@@ -1790,27 +1787,21 @@ ldap_chain_db_config(
* be warned.
*/
be->bd_info = lback;
be->be_private = (void *)lc->lc_cfg_li;
be->be_cf_ocs = lback->bi_cf_ocs;
db.bd_info = lback;
db.be_private = (void *)lc->lc_cfg_li;
db.be_cf_ocs = lback->bi_cf_ocs;
rc = config_generic_wrapper( be, fname, lineno, argc, argv );
rc = config_generic_wrapper( &db, fname, lineno, argc, argv );
argv[ 0 ] = save_argv0;
be->be_cf_ocs = be_cf_ocs;
be->be_private = be_private;
be->bd_info = bd_info;
if ( which_argv == 0 ) {
private_destroy:;
if ( rc != 0 ) {
BackendDB db = *be;
db.bd_info = lback;
db.be_private = (void *)lc->lc_cfg_li;
ldap_chain_db_destroy_one( &db, NULL );
lc->lc_cfg_li = NULL;
} else {
if ( lc->lc_cfg_li->li_bvuri == NULL
|| BER_BVISNULL( &lc->lc_cfg_li->li_bvuri[ 0 ] )
......@@ -1836,7 +1827,7 @@ private_destroy:;
}
}
}
return rc;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment