]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/rwmmap.c
Fix corrupted CSN issue
[openldap] / servers / slapd / overlays / rwmmap.c
index 052348ade7b3822dfd3a1d5aeb30f18411bee73e..95eec2f92229c7e92ca114740b7b5fca98773546 100644 (file)
@@ -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];