]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/attr.c
now I remember why I introduced the 'has_ldapinfo_dn_ru' flag
[openldap] / servers / slapd / attr.c
index 8eaed0fc7bb716e774524f3caabbebaa1e6d35ec..cb1e5ccb6c8918187b236ff478fe1aa7914c2d3c 100644 (file)
@@ -1,9 +1,28 @@
+/* attr.c - routines for dealing with attributes */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2004 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
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* 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.
  */
-/* attr.c - routines for dealing with attributes */
 
 #include "portable.h"
 
@@ -111,8 +130,8 @@ Attribute *attrs_dup( Attribute *a )
  * attr_merge - merge the given type and value with the list of
  * attributes in attrs.
  *
- * For SLAP_NVALUES: nvals must be NULL if the attribute has no
- * normalizer. In this case, a->a_nvals will be set equal to a->a_vals.
+ * nvals must be NULL if the attribute has no normalizer.
+ * In this case, a->a_nvals will be set equal to a->a_vals.
  *
  * returns     0       everything went ok
  *             -1      trouble
@@ -162,15 +181,17 @@ attr_merge_normalize(
        BerVarray       nvals = NULL;
        int             rc;
 
-       if ( desc->ad_type->sat_equality && desc->ad_type->sat_equality->smr_normalize ) {
+       if ( desc->ad_type->sat_equality &&
+               desc->ad_type->sat_equality->smr_normalize )
+       {
                int     i;
                
                for ( i = 0; vals[i].bv_val; i++ );
 
-               nvals = ch_calloc( sizeof(struct berval), i + 1 );
+               nvals = sl_calloc( sizeof(struct berval), i + 1, memctx );
                for ( i = 0; vals[i].bv_val; i++ ) {
                        rc = (*desc->ad_type->sat_equality->smr_normalize)(
-                                       0,
+                                       SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
                                        desc->ad_type->sat_syntax,
                                        desc->ad_type->sat_equality,
                                        &vals[i], &nvals[i], memctx );
@@ -187,7 +208,7 @@ attr_merge_normalize(
 
 error_return:;
        if ( nvals != NULL ) {
-               ber_bvarray_free( nvals );
+               ber_bvarray_free_x( nvals, memctx );
        }
        return rc;
 }
@@ -235,9 +256,11 @@ attr_merge_normalize_one(
        struct berval   *nvalp;
        int             rc;
 
-       if ( desc->ad_type->sat_equality && desc->ad_type->sat_equality->smr_normalize ) {
+       if ( desc->ad_type->sat_equality &&
+               desc->ad_type->sat_equality->smr_normalize )
+       {
                rc = (*desc->ad_type->sat_equality->smr_normalize)(
-                               0,
+                               SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
                                desc->ad_type->sat_syntax,
                                desc->ad_type->sat_equality,
                                val, &nval, memctx );
@@ -252,7 +275,7 @@ attr_merge_normalize_one(
 
        rc = attr_merge_one( e, desc, val, nvalp );
        if ( nvalp != NULL ) {
-               ch_free( nval.bv_val );
+               sl_free( nval.bv_val, memctx );
        }
        return rc;
 }