X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fdn.c;h=cb7fb5417293ee393d206f968fd755e839941cbb;hb=0a5f1e8516d386784ed7f605e5d03c7ee6d7cedd;hp=3930ea666b18abed239692fbf81ea66b8e231a22;hpb=eebc51b9bf75d0ea89ea433ffcdd2aa59f4c43d5;p=openldap diff --git a/servers/slapd/dn.c b/servers/slapd/dn.c index 3930ea666b..cb7fb54172 100644 --- a/servers/slapd/dn.c +++ b/servers/slapd/dn.c @@ -1,8 +1,27 @@ /* dn.c - routines for dealing with distinguished names */ /* $OpenLDAP$ */ -/* - * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2003 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* Portions Copyright (c) 1995 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. */ #include "portable.h" @@ -14,10 +33,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 +333,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 +348,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 ); @@ -374,7 +393,7 @@ dnNormalize( * Schema-aware rewrite */ if ( LDAPDN_rewrite( dn, 0, ctx ) != LDAP_SUCCESS ) { - ldap_dnfree( dn ); + ldap_dnfree_x( dn, ctx ); return LDAP_INVALID_SYNTAX; } @@ -454,7 +473,11 @@ dnPretty( } } +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ARGS, "<<< dnPretty: <%s>\n", out->bv_val, 0, 0 ); +#else Debug( LDAP_DEBUG_TRACE, "<<< dnPretty: <%s>\n", out->bv_val, 0, 0 ); +#endif return LDAP_SUCCESS; } @@ -815,7 +838,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; @@ -825,7 +849,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++ = ','; @@ -879,7 +903,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; } /*