#else
static const char *ad_objectClass = "objectclass";
#endif
+ int extensible = 0;
if( !global_schemacheck ) return LDAP_SUCCESS;
ret = LDAP_OBJECT_CLASS_VIOLATION;
break;
}
+
+#ifdef SLAPD_SCHEMA_NOT_COMPAT
+ if( oc == slap_schema.si_oc_extensibleObject )
+#else
+ if( !strcmp( aoc->a_vals[i], "extensibleObject" ) == 0 )
+#endif
+ {
+ extensible=1;
+ }
+
}
}
return ret;
}
+ if( extensible ) {
+ return LDAP_SUCCESS;
+ }
+
/* check that each attr in the entry is allowed by some oc */
for ( a = e->e_attrs; a != NULL; a = a->a_next ) {
#ifdef SLAPD_SCHEMA_NOT_COMPAT
size_t ssom_offset;
} oc_map[] = {
{ "top", offsetof(struct slap_internal_schema, si_oc_top) },
+ { "extensibleObject", offsetof(struct slap_internal_schema, si_oc_extensibleObject) },
{ "alias", offsetof(struct slap_internal_schema, si_oc_alias) },
{ "referral", offsetof(struct slap_internal_schema, si_oc_referral) },
{ "LDAProotDSE", offsetof(struct slap_internal_schema, si_oc_rootdse) },
struct slap_internal_schema {
/* objectClass */
ObjectClass *si_oc_top;
+ ObjectClass *si_oc_extensibleObject;
ObjectClass *si_oc_alias;
ObjectClass *si_oc_referral;
ObjectClass *si_oc_subentry;