From 95dd239dabd205015ab63c61ec21e291c9389907 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Fri, 8 Feb 2008 21:34:35 +0000 Subject: [PATCH] ITS#5284 --- CHANGES | 1 + servers/slapd/bconfig.c | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 4dcc64f356..d23513cc31 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,7 @@ OpenLDAP 2.4.8 Engineering Fixed slapd include handling (ITS#5276) Fixed slapd non-atomic signal variables (ITS#5248) Fixed slapd-ldif delete (ITS#5265) + Fixed slapd overlay ordering when moving to slapd.d (ITS#5284) Fixed test047 to skip if rwm is not available (ITS#5292) Build Environment Fixed libldap_r threaded library linking (ITS#4982) diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 10fec37525..e394c3d787 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -797,6 +797,11 @@ typedef struct ServerID { static ServerID *sid_list; +typedef struct voidList { + struct voidList *vl_next; + void *vl_ptr; +} voidList; + typedef struct ADlist { struct ADlist *al_next; AttributeDescription *al_desc; @@ -5759,8 +5764,19 @@ config_back_db_open( BackendDB *be, ConfigReply *cr ) slap_overinst *on; Entry *oe; int j; - - for (j=0,on=oi->oi_list; on; j++,on=on->on_next) { + voidList *vl, *v0 = NULL; + + /* overlays are in LIFO order, must reverse stack */ + for (on=oi->oi_list; on; on=on->on_next) { + vl = ch_malloc( sizeof( voidList )); + vl->vl_next = v0; + v0 = vl; + vl->vl_ptr = on; + } + for (j=0; vl; j++,vl=v0) { + on = vl->vl_ptr; + v0 = vl->vl_next; + ch_free( vl ); if ( on->on_bi.bi_db_config && !on->on_bi.bi_cf_ocs ) { Debug( LDAP_DEBUG_ANY, "WARNING: No dynamic config support for overlay %s.\n", -- 2.39.5