From f350ef5f19ec755c93c6c09210cdf276d1b66877 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 19 Oct 2007 06:47:54 +0200 Subject: [PATCH] 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 --- source/dsdb/samdb/ldb_modules/objectclass.c | 23 ++++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/source/dsdb/samdb/ldb_modules/objectclass.c b/source/dsdb/samdb/ldb_modules/objectclass.c index 97eed3fc5b3..93c78fd1639 100644 --- a/source/dsdb/samdb/ldb_modules/objectclass.c +++ b/source/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,