From 35dc4d9999b6d3284adba96bc408ba55faf3475a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 19 Oct 2007 06:47:54 +0200 Subject: r25704: Handle the chicken-and-egg problem of setting up the LDB before we get a schema. perhaps i need to look into metze's 'load a schema from ldif' code. Andrew Bartlett (This used to be commit f350ef5f19ec755c93c6c09210cdf276d1b66877) --- source4/dsdb/samdb/ldb_modules/objectclass.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'source4/dsdb/samdb/ldb_modules/objectclass.c') diff --git a/source4/dsdb/samdb/ldb_modules/objectclass.c b/source4/dsdb/samdb/ldb_modules/objectclass.c index 97eed3fc5b..93c78fd163 100644 --- a/source4/dsdb/samdb/ldb_modules/objectclass.c +++ b/source4/dsdb/samdb/ldb_modules/objectclass.c @@ -217,15 +217,22 @@ static int objectclass_sort(struct ldb_module *module, * the bottom here */ } while (parent_class); - if (unsorted) { - /* This shouldn't happen, and would break MMC, but we can't - * afford to loose objectClasses. Perhaps there was no 'top', - * or some other schema error? - */ - ldb_asprintf_errstring(module->ldb, "objectclass %s is not a valid objectClass in objectClass chain", unsorted->objectclass); - return LDB_ERR_OBJECT_CLASS_VIOLATION; + if (!unsorted) { + return LDB_SUCCESS; } - return LDB_SUCCESS; + + if (!schema) { + /* If we don't have schema yet, then just merge the lists again */ + DLIST_CONCATENATE(sorted, unsorted, struct class_list *); + return LDB_SUCCESS; + } + + /* This shouldn't happen, and would break MMC, perhaps there + * was no 'top', a conflict in the objectClasses or some other + * schema error? + */ + ldb_asprintf_errstring(module->ldb, "objectclass %s is not a valid objectClass in objectClass chain", unsorted->objectclass); + return LDB_ERR_OBJECT_CLASS_VIOLATION; } static DATA_BLOB *get_sd(struct ldb_module *module, TALLOC_CTX *mem_ctx, -- cgit