diff --git a/CHANGES b/CHANGES index 27379cb27c35b604128da5eb3a92c8babfd553c0..24d0afb4cfc0a16f0b4fda791bba1ba4e5a08691 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 c3424438e6fd5715ae7042f059cc418ab532ae6a..610f607545a6c7a6c2d3288a4fc3ac9ee6f45a1e 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 d612712f0e7f0f87ee0e9151db30f90307fb4758..a96bf8b4507cfad4dc35096390be363d604bfbfb 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 c9a8126db5514282427aa67c7fa250d0f9dc99e1..bc79ae17b64fdb1379577f8039d6948610ec4ba5 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 );