From: Quanah Gibson-Mount Date: Wed, 3 Sep 2008 02:11:48 +0000 (+0000) Subject: ITS#5647 X-Git-Tag: OPENLDAP_REL_ENG_2_4_12~96 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=1179de7ad866e27098eb705633a5ec64b58b4293;p=openldap ITS#5647 --- diff --git a/CHANGES b/CHANGES index 27379cb27c..24d0afb4cf 100644 --- a/CHANGES +++ b/CHANGES @@ -8,12 +8,14 @@ OpenLDAP 2.4.12 Engineering Fixed slapd socket closing on Windows (ITS#5606) Fixed slapd-ldap,slapd-meta invalid filter behavior (ITS#5614) Fixed slapd-meta quarantine behavior (ITS#5592) + Fixed slapd-meta objectClass filtering (ITS#5647) Fixed slapd-relay initialization (ITS#5643) Fixed slapd-sql freeing of connection (ITS#5607) Fixed slapo-constraint string termination (ITS#5609) Fixed slapo-memberof internal operations DN (ITS#5622) Fixed slapo-rwm callback cleanup (ITS#5601) Fixed slapo-rwm attr mapping and merging (ITS#5624) + Fixed slapo-rwm objectClass filtering (ITS#5647) Fixed slapo-unique filter validation (ITS#5581) Fixed slapo-unique suffix testing (ITS#5641) Build Environment diff --git a/servers/slapd/back-meta/config.c b/servers/slapd/back-meta/config.c index c3424438e6..610f607545 100644 --- a/servers/slapd/back-meta/config.c +++ b/servers/slapd/back-meta/config.c @@ -1556,6 +1556,11 @@ ldap_back_map_config( return 1; } + if ( !is_oc && map->map == NULL ) { + /* only init if required */ + ldap_back_map_init( map, &mapping ); + } + if ( strcmp( argv[ 2 ], "*" ) == 0 ) { if ( argc < 4 || strcmp( argv[ 3 ], "*" ) == 0 ) { map->drop_missing = ( argc < 4 ); @@ -1702,11 +1707,6 @@ ldap_back_map_config( mapping_cmp, mapping_dup ); success_return:; - if ( !is_oc && map->map == NULL ) { - /* only init if required */ - ldap_back_map_init( map, &mapping ); - } - return 0; error_return:; diff --git a/servers/slapd/overlays/rwmconf.c b/servers/slapd/overlays/rwmconf.c index d612712f0e..a96bf8b450 100644 --- a/servers/slapd/overlays/rwmconf.c +++ b/servers/slapd/overlays/rwmconf.c @@ -71,6 +71,13 @@ rwm_map_config( return 1; } + if ( !is_oc && map->map == NULL ) { + /* only init if required */ + if ( rwm_map_init( map, &mapping ) != LDAP_SUCCESS ) { + return 1; + } + } + if ( strcmp( argv[2], "*" ) == 0 ) { if ( argc < 4 || strcmp( argv[3], "*" ) == 0 ) { map->drop_missing = ( argc < 4 ); @@ -225,11 +232,6 @@ rwm_map_config( rwm_mapping_cmp, rwm_mapping_dup ); success_return:; - if ( !is_oc && map->map == NULL ) { - /* only init if required */ - rc = rwm_map_init( map, &mapping ) != LDAP_SUCCESS; - } - return rc; error_return:; diff --git a/servers/slapd/overlays/rwmmap.c b/servers/slapd/overlays/rwmmap.c index c9a8126db5..bc79ae17b6 100644 --- a/servers/slapd/overlays/rwmmap.c +++ b/servers/slapd/overlays/rwmmap.c @@ -81,7 +81,9 @@ rwm_map_init( struct ldapmap *lm, struct ldapmapping **m ) return LDAP_NO_MEMORY; } - /* FIXME: I don't think this is needed any more... */ + /* NOTE: this is needed to make sure that + * rwm-map attribute * + * does not filter out all attributes including objectClass */ rc = slap_str2ad( "objectClass", &mapping[0].m_src_ad, &text ); if ( rc != LDAP_SUCCESS ) { ch_free( mapping );