r25704: Handle the chicken-and-egg problem of setting up the LDB before we get
authorAndrew Bartlett <abartlet@samba.org>
Fri, 19 Oct 2007 04:47:54 +0000 (06:47 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 21 Dec 2007 04:43:22 +0000 (05:43 +0100)
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

index 97eed3fc5b3c983cb3d333a7ab1732cae1457056..93c78fd16396a8ac51a10e522581cac07c306908 100644 (file)
@@ -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,