* 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
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++ ) {
rc = attr_merge( e, desc, vals, nvals );
error_return:;
- ber_bvarray_free( nvals );
+ if ( nvals != NULL ) {
+ ber_bvarray_free( nvals );
+ }
return rc;
}