diff options
author | Andrew Bartlett <abartlet@samba.org> | 2012-03-26 12:06:39 +1100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2012-03-26 05:38:13 +0200 |
commit | 7290a622844def1086cff993aaba958bc976538d (patch) | |
tree | ae9e7162f33b5ec163a08845e55299cd8b1f7a02 | |
parent | cb7220d72124b89f316c181c674982dbe5f6c372 (diff) | |
download | samba-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.c | 4 | ||||
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/samba_dsdb.c | 2 |
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) |