X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foverlays%2Frwmmap.c;h=95eec2f92229c7e92ca114740b7b5fca98773546;hb=8bdfd2edbb7a09f5bfe96b2bca043680f731237a;hp=8c77dbdad80c1ac373a0045e6fd8d7855fd62f75;hpb=9401bd38172c6c1de18e4c4e731ba764b9ee8dc1;p=openldap diff --git a/servers/slapd/overlays/rwmmap.c b/servers/slapd/overlays/rwmmap.c index 8c77dbdad8..95eec2f922 100644 --- a/servers/slapd/overlays/rwmmap.c +++ b/servers/slapd/overlays/rwmmap.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1999-2008 The OpenLDAP Foundation. + * Copyright 1999-2009 The OpenLDAP Foundation. * Portions Copyright 1999-2003 Howard Chu. * Portions Copyright 2000-2003 Pierangelo Masarati. * All rights reserved. @@ -121,6 +121,15 @@ rwm_mapping( struct ldapmap *map, struct berval *s, struct ldapmapping **m, int assert( m != NULL ); + /* let special attrnames slip through (ITS#5760) */ + if ( bvmatch( s, slap_bv_no_attrs ) + || bvmatch( s, slap_bv_all_user_attrs ) + || bvmatch( s, slap_bv_all_operational_attrs ) ) + { + *m = NULL; + return 0; + } + if ( remap == RWM_REMAP ) { tree = map->remap; @@ -312,7 +321,7 @@ rwm_map_attrnames( if ( j == 0 && i != 0 ) { memset( &(*anp)[0], 0, sizeof( AttributeName ) ); - BER_BVSTR( &(*anp)[0].an_name, LDAP_NO_ATTRS ); + (*anp)[0].an_name = *slap_bv_no_attrs; j = 1; } memset( &(*anp)[j], 0, sizeof( AttributeName ) ); @@ -1187,7 +1196,7 @@ rwm_dnattr_result_rewrite( last--; for ( i = 0; !BER_BVISNULL( &a_vals[i] ); i++ ) { - struct berval pdn, ndn; + struct berval pdn, ndn = BER_BVNULL; int rc; pdn = a_vals[i];