X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fattr.c;h=f46be1f472e21eaabe485e47bca459f61ac7da3e;hb=0af650863210ae1faac95d7ca44bdeefa9e99843;hp=8a1121ce034241998480900e8cd92b5428482e3c;hpb=5178355d27f922b701b6016c657fbb62cf5dd334;p=openldap diff --git a/servers/slapd/attr.c b/servers/slapd/attr.c index 8a1121ce03..f46be1f472 100644 --- a/servers/slapd/attr.c +++ b/servers/slapd/attr.c @@ -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; }