if( rc != LDAP_SUCCESS ) {
return rc;
}
- if ( tmpval.bv_len ) {
- mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
- mod->sml_op = mop;
- mod->sml_type.bv_val = NULL;
- mod->sml_desc = slap_schema.si_ad_structuralObjectClass;
- mod->sml_bvalues = (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
- ber_dupbv( &mod->sml_bvalues[0], &tmpval );
- mod->sml_bvalues[1].bv_val = NULL;
- assert( mod->sml_bvalues[0].bv_val );
- *modtail = mod;
- modtail = &mod->sml_next;
- }
+
+ mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
+ mod->sml_op = mop;
+ mod->sml_type.bv_val = NULL;
+ mod->sml_desc = slap_schema.si_ad_structuralObjectClass;
+ mod->sml_bvalues = (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
+ ber_dupbv( &mod->sml_bvalues[0], &tmpval );
+ mod->sml_bvalues[1].bv_val = NULL;
+ assert( mod->sml_bvalues[0].bv_val );
+ *modtail = mod;
+ modtail = &mod->sml_next;
}
if( SLAP_LASTMOD(be) ) {
rc = structural_class( aoc->a_vals, &nsc, &oc, text, textbuf, textlen );
if( rc != LDAP_SUCCESS ) {
return rc;
- } else if ( nsc.bv_len == 0 ) {
- return LDAP_OBJECT_CLASS_VIOLATION;
}
*text = textbuf;
}
}
- if( scp )
+ if( scp ) {
*scp = sc;
+ }
if( sc == NULL ) {
*text = "no structural object classes provided";
}
*scbv = ocs[scn];
+
+ if( scbv->bv_len ) {
+ *text = "invalid structural object class";
+ return LDAP_OBJECT_CLASS_VIOLATION;
+ }
+
return LDAP_SUCCESS;
}