+ /* test asserted values against existing values */
+ if( a ) {
+ for( j = 0; a->a_vals[j].bv_val != NULL; j++ ) {
+ int rc = ber_bvcmp( &mod->sm_bvalues[i],
+ &a->a_vals[j] );
+
+ if( rc == 0 ) {
+ /* value exists already */
+ return LDAP_TYPE_OR_VALUE_EXISTS;
+ }
+ }
+ }
+
+ /* test asserted values against themselves */
+ for( j = 0; j < i; j++ ) {
+ int rc = ber_bvcmp( &mod->sm_bvalues[i],
+ &mod->sm_bvalues[j] );
+
+ if( rc == 0 ) {
+ /* value exists already */
+ return LDAP_TYPE_OR_VALUE_EXISTS;
+ }
+ }
+ }
+
+ } else {
+ for ( i = 0; mod->sm_bvalues[i].bv_val != NULL; i++ ) {
+ int rc, match;