]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/attr.c
s/forms/form in PADL copyright
[openldap] / servers / slapd / attr.c
index 8a1121ce034241998480900e8cd92b5428482e3c..f46be1f472e21eaabe485e47bca459f61ac7da3e 100644 (file)
@@ -111,8 +111,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,10 +162,10 @@ attr_merge_normalize(
        BerVarray       nvals = NULL;
        int             rc;
 
-       if ( 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++);
+               for ( i = 0; vals[i].bv_val; i++ );
 
                nvals = ch_calloc( sizeof(struct berval), i + 1 );
                for ( i = 0; vals[i].bv_val; i++ ) {
@@ -186,7 +186,9 @@ attr_merge_normalize(
        rc = attr_merge( e, desc, vals, nvals );
 
 error_return:;
-       ber_bvarray_free( nvals );
+       if ( nvals != NULL ) {
+               ber_bvarray_free( nvals );
+       }
        return rc;
 }