summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2012-03-26 12:06:39 +1100
committerAndrew Bartlett <abartlet@samba.org>2012-03-26 05:38:13 +0200
commit7290a622844def1086cff993aaba958bc976538d (patch)
treeae9e7162f33b5ec163a08845e55299cd8b1f7a02
parentcb7220d72124b89f316c181c674982dbe5f6c372 (diff)
downloadsamba-7290a622844def1086cff993aaba958bc976538d.tar.gz
samba-7290a622844def1086cff993aaba958bc976538d.tar.bz2
samba-7290a622844def1086cff993aaba958bc976538d.zip
s4-dsdb: use constant-time search for descriptor -> get_last_structural_class()
The objectClass list is sorted at this point, as we are called below the objectclass module here, or are working from a search result. Andrew Bartlett Autobuild-User: Andrew Bartlett <abartlet@samba.org> Autobuild-Date: Mon Mar 26 05:38:13 CEST 2012 on sn-devel-104
-rw-r--r--source4/dsdb/samdb/ldb_modules/descriptor.c4
-rw-r--r--source4/dsdb/samdb/ldb_modules/samba_dsdb.c2
2 files changed, 4 insertions, 2 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/descriptor.c b/source4/dsdb/samdb/ldb_modules/descriptor.c
index 47207db201..f2afe742af 100644
--- a/source4/dsdb/samdb/ldb_modules/descriptor.c
+++ b/source4/dsdb/samdb/ldb_modules/descriptor.c
@@ -543,7 +543,7 @@ static int descriptor_add(struct ldb_module *module, struct ldb_request *req)
}
objectclass = get_last_structural_class(schema, objectclass_element,
- false);
+ true);
if (objectclass == NULL) {
return ldb_operr(ldb);
}
@@ -662,7 +662,7 @@ static int descriptor_modify(struct ldb_module *module, struct ldb_request *req)
}
objectclass = get_last_structural_class(schema, objectclass_element,
- false);
+ true);
if (objectclass == NULL) {
return ldb_operr(ldb);
}
diff --git a/source4/dsdb/samdb/ldb_modules/samba_dsdb.c b/source4/dsdb/samdb/ldb_modules/samba_dsdb.c
index c7c4fe377c..d58b584b77 100644
--- a/source4/dsdb/samdb/ldb_modules/samba_dsdb.c
+++ b/source4/dsdb/samdb/ldb_modules/samba_dsdb.c
@@ -150,6 +150,8 @@ static int samba_dsdb_init(struct ldb_module *module)
- extended_dn_in must be before objectclass.c, as it resolves the DN
- objectclass must be before password_hash and samldb since these LDB
modules require the expanded "objectClass" list
+ - objectclass must be before descriptor, as descriptor assumes that
+ objectClass values are sorted
- objectclass_attrs must be behind operational in order to see all
attributes (the operational module protects and therefore
suppresses per default some important ones)