r17703: Fixes to enable the entryUUID module to work for it's objectClass ->
authorAndrew Bartlett <abartlet@samba.org>
Tue, 22 Aug 2006 10:05:20 +0000 (10:05 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:16:28 +0000 (14:16 -0500)
OID mappings.

The key point is to 'enable' the partitions in the partitions module
before the init is complete.  That way, the modules can perform
searches that use partitions.

Andrew Bartlett

source/dsdb/samdb/ldb_modules/entryUUID.c
source/dsdb/samdb/ldb_modules/partition.c

index 826a895dbc9507d9432e7586062ebd450bcb5a8c..06e5384cffca33557882fd4ffe24fd608bab9cf0 100644 (file)
@@ -116,7 +116,7 @@ static struct ldb_val objectCategory_always_dn(struct ldb_module *module, TALLOC
        entryUUID_private = talloc_get_type(map_private->caller_private, struct entryUUID_private);
        list = entryUUID_private->objectclass_res;
 
-       for (i=0; list && i < list->count; i++) {
+       for (i=0; list && (i < list->count); i++) {
                if (ldb_attr_cmp(val->data, ldb_msg_find_attr_as_string(list->msgs[i], "lDAPDisplayName", NULL)) == 0) {
                        char *dn = ldb_dn_linearize(ctx, list->msgs[i]->dn);
                        return data_blob_string_const(dn);
@@ -137,7 +137,7 @@ static struct ldb_val class_to_oid(struct ldb_module *module, TALLOC_CTX *ctx, c
        entryUUID_private = talloc_get_type(map_private->caller_private, struct entryUUID_private);
        list = entryUUID_private->objectclass_res;
 
-       for (i=0; list && i < list->count; i++) {
+       for (i=0; list && (i < list->count); i++) {
                if (ldb_attr_cmp(val->data, ldb_msg_find_attr_as_string(list->msgs[i], "lDAPDisplayName", NULL)) == 0) {
                        const char *oid = ldb_msg_find_attr_as_string(list->msgs[i], "governsID", NULL);
                        return data_blob_string_const(oid);
@@ -158,7 +158,7 @@ static struct ldb_val class_from_oid(struct ldb_module *module, TALLOC_CTX *ctx,
        entryUUID_private = talloc_get_type(map_private->caller_private, struct entryUUID_private);
        list = entryUUID_private->objectclass_res;
 
-       for (i=0; list && i < list->count; i++) {
+       for (i=0; list && (i < list->count); i++) {
                if (ldb_attr_cmp(val->data, ldb_msg_find_attr_as_string(list->msgs[i], "governsID", NULL)) == 0) {
                        const char *oc = ldb_msg_find_attr_as_string(list->msgs[i], "lDAPDisplayName", NULL);
                        return data_blob_string_const(oc);
index ba0c2bc9f405f7f11d1c320af4a90e55b524bee4..889c0bfeb07be1ef998f35a5526564d62e66cc84 100644 (file)
@@ -643,6 +643,10 @@ static int partition_init(struct ldb_module *module)
                data->replicate[i] = NULL;
        }
 
+       /* Make the private data available to any searches the modules may trigger in initialisation */
+       module->private_data = data;
+       talloc_steal(module, data);
+       
        modules_attributes = ldb_msg_find_element(msg, "modules");
        if (modules_attributes) {
                for (i=0; i < modules_attributes->num_values; i++) {
@@ -708,9 +712,6 @@ static int partition_init(struct ldb_module *module)
                }
        }
 
-       module->private_data = data;
-       talloc_steal(module, data);
-       
        talloc_free(mem_ctx);
        return ldb_next_init(module);
 }