/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2006 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
"entry_check_schema(%s): %s\n",
e->e_dn, textbuf, 0 );
- return LDAP_OBJECT_CLASS_VIOLATION;
+ rc = LDAP_OBJECT_CLASS_VIOLATION;
+ goto leave;
}
if( sc->soc_kind != LDAP_SCHEMA_STRUCTURAL ) {
"entry_check_schema(%s): %s\n",
e->e_dn, textbuf, 0 );
- return LDAP_OTHER;
+ rc = LDAP_OTHER;
+ goto leave;
}
got_soc:
"entry_check_schema(%s): %s\n",
e->e_dn, textbuf, 0 );
- return LDAP_OBJECT_CLASS_VIOLATION;
+ rc = LDAP_OBJECT_CLASS_VIOLATION;
+ goto leave;
}
*text = textbuf;
}
}
}
+ if ( k ) {
+ snprintf( textbuf, textlen,
+ "class '%s' not allowed by content rule '%s'",
+ oc->soc_cname.bv_val,
+ ldap_contentrule2name( &cr->scr_crule ) );
+ }
} else if ( global_disallows & SLAP_DISALLOW_AUX_WO_CR ) {
k = -1;
+ snprintf( textbuf, textlen,
+ "class '%s' not allowed by any content rule",
+ oc->soc_cname.bv_val );
} else {
k = 0;
}
if( k == -1 ) {
- snprintf( textbuf, textlen,
- "content rule '%s' does not allow class '%s'",
- ldap_contentrule2name( &cr->scr_crule ),
- oc->soc_cname.bv_val );
-
Debug( LDAP_DEBUG_ANY,
"Entry (%s): %s\n",
e->e_dn, textbuf, 0 );
for ( i = 0; socs[i]; i++ ) {
/* if we know about the oc */
ObjectClass *oc = socs[i];
+ /* extensibleObject allows all */
+ if ( oc == slap_schema.si_oc_extensibleObject ) {
+ return LDAP_SUCCESS;
+ }
if ( oc != NULL && oc->soc_kind != LDAP_SCHEMA_ABSTRACT &&
( sc == NULL || oc->soc_kind == LDAP_SCHEMA_AUXILIARY ))
{