From c030dbfefde8ece21c4d001a83a6aaf3c3be5980 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Wed, 1 May 2002 17:53:32 +0000 Subject: [PATCH] massage dn-valued attributes also when compiled without --enable-rewrite --- servers/slapd/back-ldap/search.c | 22 +++++++++++++--------- servers/slapd/back-ldap/suffixmassage.c | 2 ++ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c index a3de170009..3bdd7215af 100644 --- a/servers/slapd/back-ldap/search.c +++ b/servers/slapd/back-ldap/search.c @@ -474,7 +474,6 @@ ldap_send_entry( } } -#ifdef ENABLE_REWRITE /* * It is necessary to try to rewrite attributes with * dn syntax because they might be used in ACLs as @@ -486,20 +485,21 @@ ldap_send_entry( * ACLs to the target directory server, and letting * everything pass thru the ldap backend. */ - /* FIXME: #ifndef ENABLE_REWRITE should we massage these? */ } else if ( strcmp( attr->a_desc->ad_type->sat_syntax->ssyn_oid, SLAPD_DN_SYNTAX ) == 0 ) { int i; for ( i = 0, bv = attr->a_vals; bv->bv_val; bv++, i++ ) { - char *newval = NULL; + struct berval newval; +#ifdef ENABLE_REWRITE switch ( rewrite_session( li->rwinfo, "searchResult", bv->bv_val, - lc->conn, &newval )) { + lc->conn, + &newval.bv_val )) { case REWRITE_REGEXEC_OK: /* left as is */ - if ( newval == NULL ) { + if ( newval.bv_val == NULL ) { break; } #ifdef NEW_LOGGING @@ -509,15 +509,16 @@ ldap_send_entry( " attr=%s:" " \"%s\" -> \"%s\"\n", attr->a_desc->ad_type->sat_cname.bv_val, - bv->bv_val, newval )); + bv->bv_val, + newval.bv_val )); #else /* !NEW_LOGGING */ Debug( LDAP_DEBUG_ARGS, "rw> searchResult on attr=%s: \"%s\" -> \"%s\"\n", attr->a_desc->ad_type->sat_cname.bv_val, - bv->bv_val, newval ); + bv->bv_val, newval.bv_val ); #endif /* !NEW_LOGGING */ free( bv->bv_val ); - ber_str2bv( newval, 0, 0, bv ); + *bv = newval; break; case REWRITE_REGEXEC_UNWILLING: @@ -530,8 +531,11 @@ ldap_send_entry( */ break; } +#else /* !ENABLE_REWRITE */ + ldap_back_dn_massage( li, bv, &newval, 0, 0 ); + *bv = newval; +#endif /* !ENABLE_REWRITE */ } -#endif /* ENABLE_REWRITE */ } *attrp = attr; diff --git a/servers/slapd/back-ldap/suffixmassage.c b/servers/slapd/back-ldap/suffixmassage.c index 9f0311e6e7..d24af0e275 100644 --- a/servers/slapd/back-ldap/suffixmassage.c +++ b/servers/slapd/back-ldap/suffixmassage.c @@ -55,6 +55,8 @@ ldap_back_dn_massage( { int i, src, dst; + assert( res ); + if ( dn == NULL ) { res->bv_val = NULL; res->bv_len = 0; -- 2.39.5