X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fdn.c;h=348336f8a6da866d0bb10f42fb12ee951175ab20;hb=c350b558d7cbfb36ec8991fadd702c5dee3f4de8;hp=be518eec58d58a8d9db1d0706d2f2515a121311a;hpb=4fce207ca57919eaac52d55fabf05c7706edca26;p=openldap diff --git a/servers/slapd/dn.c b/servers/slapd/dn.c index be518eec58..348336f8a6 100644 --- a/servers/slapd/dn.c +++ b/servers/slapd/dn.c @@ -14,10 +14,8 @@ #include #include -#include "ldap_pvt.h" - #include "slap.h" - +#include "ldap_pvt.h" /* must be after slap.h, to get ldap_bv2dn_x() & co */ #include "lutil.h" /* @@ -316,7 +314,7 @@ LDAPDN_rewrite( LDAPDN dn, unsigned flags, void *ctx ) * if value is empty, use empty_bv */ rc = ( *normf )( - 0, + SLAP_MR_VALUE_OF_ASSERTION_SYNTAX, ad->ad_type->sat_syntax, mr, ava->la_value.bv_len @@ -331,8 +329,10 @@ LDAPDN_rewrite( LDAPDN dn, unsigned flags, void *ctx ) if( bv.bv_val ) { - ber_memfree_x( ava->la_value.bv_val, ctx ); + if ( ava->la_flags & LDAP_AVA_FREE_VALUE ) + ber_memfree_x( ava->la_value.bv_val, ctx ); ava->la_value = bv; + ava->la_flags |= LDAP_AVA_FREE_VALUE; } if( do_sort ) AVA_Sort( rdn, iAVA ); @@ -819,7 +819,8 @@ rdnValidate( struct berval *rdn ) void build_new_dn( struct berval * new_dn, struct berval * parent_dn, - struct berval * newrdn ) + struct berval * newrdn, + void *memctx ) { char *ptr; @@ -829,7 +830,7 @@ build_new_dn( struct berval * new_dn, } new_dn->bv_len = parent_dn->bv_len + newrdn->bv_len + 1; - new_dn->bv_val = (char *) ch_malloc( new_dn->bv_len + 1 ); + new_dn->bv_val = (char *) sl_malloc( new_dn->bv_len + 1, memctx ); ptr = lutil_strcopy( new_dn->bv_val, newrdn->bv_val ); *ptr++ = ','; @@ -883,7 +884,12 @@ int dnX509normalize( void *x509_name, struct berval *out ) { /* Invoke the LDAP library's converter with our schema-rewriter */ - return ldap_X509dn2bv( x509_name, out, LDAPDN_rewrite, 0 ); + int rc = ldap_X509dn2bv( x509_name, out, LDAPDN_rewrite, 0 ); + + Debug( LDAP_DEBUG_TRACE, + "dnX509Normalize: <%s>\n", out->bv_val, 0, 0 ); + + return rc; } /*