X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fadd.c;h=e00f6d1a40973eabfcf7d3308999461abd511657;hb=dbaf7c5c2503b2770c9075e30a9a63b6ff577d6f;hp=b69f7a720dedc6c5f4893d21c83132018e30b3bd;hpb=78172aa0cf52dd5beb8994c10ba5ea6bd18a5e65;p=openldap diff --git a/servers/slapd/add.c b/servers/slapd/add.c index b69f7a720d..e00f6d1a40 100644 --- a/servers/slapd/add.c +++ b/servers/slapd/add.c @@ -639,10 +639,16 @@ int slap_add_opattrs( if ( oc ) { rc = structural_class( oc->a_vals, &tmp, NULL, text, textbuf, textlen ); - if( rc != LDAP_SUCCESS ) return rc; - - attr_merge_one( op->ora_e, slap_schema.si_ad_structuralObjectClass, - &tmp, NULL ); + if( rc == LDAP_SUCCESS ) { + attr_merge_one( op->ora_e, + slap_schema.si_ad_structuralObjectClass, + &tmp, NULL ); + + } else if ( !SLAP_NO_SCHEMA_CHECK( op->o_bd ) && + !get_no_schema_check( op ) ) + { + return rc; + } } } @@ -736,5 +742,6 @@ int slap_add_opattrs( slap_schema.si_ad_modifyTimestamp, ×tamp, NULL ); } } + return LDAP_SUCCESS; }