Fixed slapd acl parsing overflow (ITS#6611)
Fixed slapd when first acl is value dependent (ITS#6693)
Fixed slapd modify to return actual error (ITS#6581)
+ Fixed slapd modify leaving rc uninitialized (ITS#6715)
Fixed slapd syncrepl reuse of presence list (ITS#6707)
Fixed slapd-bdb entry cache delete failure (ITS#6577)
Fixed slapd-ndb to honor rootpw setting (ITS#6661)
AttributeDescription *ad;
MatchingRule *mr;
int istack[sizeof(int)*16];
- int i, j, k, l, ir, jstack, match, *ix, itmp, nvals, rc;
+ int i, j, k, l, ir, jstack, match, *ix, itmp, nvals, rc = LDAP_SUCCESS;
int is_norm;
struct berval a, *cv;
ad = ml->sml_desc;
nvals = ml->sml_numvals;
+ if ( nvals <= 1 )
+ goto ret;
/* For Modifications, sml_nvalues is NULL if normalization wasn't needed.
* For Attributes, sml_nvalues == sml_values when normalization isn't needed.
slap_sl_free( ix, ctx );
- if ( rc != LDAP_SUCCESS ) {
- return rc;
- } else if ( match == 0 ) {
+ if ( rc == LDAP_SUCCESS && match == 0 ) {
/* value exists already */
assert( i >= 0 );
assert( i < nvals );
- return LDAP_TYPE_OR_VALUE_EXISTS;
+ rc = LDAP_TYPE_OR_VALUE_EXISTS;
}
- return LDAP_SUCCESS;
+ ret:
+ return rc;
}
/* Enter with bv->bv_len = sizeof buffer, returns with