diff options
author | Andrew Bartlett <abartlet@samba.org> | 2007-09-03 02:51:24 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 15:03:37 -0500 |
commit | 8294016a1b72770f5c322decda9b705ed90fd40d (patch) | |
tree | cd92681a798a63b8656fb77a1330a1b245ef73a6 /source4/dsdb/samdb/ldb_modules/samldb.c | |
parent | d14a29fb74f2751142b3576a30ebdcd079268bc1 (diff) | |
download | samba-8294016a1b72770f5c322decda9b705ed90fd40d.tar.gz samba-8294016a1b72770f5c322decda9b705ed90fd40d.tar.bz2 samba-8294016a1b72770f5c322decda9b705ed90fd40d.zip |
r24914: In response to bug #4892 by Matthias Wallnöfer <mwallnoefer@yahoo.de>,
allow the objectclass module to reconstruct the objectclass hierarchy,
rather than using templates.
The issue being fixed in particular is that 'top' was not being set on
containers.
This should ensure we do this right for all objects.
Andrew Bartlett
(This used to be commit d17a0058ba8492b8b3f81b6f10fc34b3e45bb8a6)
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/samldb.c')
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/samldb.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c index d448e30b31..5342c14967 100644 --- a/source4/dsdb/samdb/ldb_modules/samldb.c +++ b/source4/dsdb/samdb/ldb_modules/samldb.c @@ -411,7 +411,7 @@ static int samldb_fill_group_object(struct ldb_module *module, const struct ldb_ } ret = samdb_copy_template(module->ldb, msg2, - "(&(CN=TemplateGroup)(objectclass=groupTemplate))", + "group", &errstr); if (ret != 0) { @@ -476,7 +476,7 @@ static int samldb_fill_user_or_computer_object(struct ldb_module *module, const if (samdb_find_attribute(module->ldb, msg, "objectclass", "computer") != NULL) { ret = samdb_copy_template(module->ldb, msg2, - "(&(CN=TemplateComputer)(objectclass=userTemplate))", + "computer", &errstr); if (ret) { ldb_asprintf_errstring(module->ldb, @@ -486,22 +486,9 @@ static int samldb_fill_user_or_computer_object(struct ldb_module *module, const talloc_free(mem_ctx); return ret; } - - /* readd user and then computer objectclasses */ - ret = samdb_find_or_add_value(module->ldb, msg2, "objectclass", "user"); - if (ret) { - talloc_free(mem_ctx); - return ret; - } - ret = samdb_find_or_add_value(module->ldb, msg2, "objectclass", "computer"); - if (ret) { - talloc_free(mem_ctx); - return ret; - } - } else { ret = samdb_copy_template(module->ldb, msg2, - "(&(CN=TemplateUser)(objectclass=userTemplate))", + "user", &errstr); if (ret) { ldb_asprintf_errstring(module->ldb, @@ -582,7 +569,7 @@ static int samldb_fill_foreignSecurityPrincipal_object(struct ldb_module *module } ret = samdb_copy_template(module->ldb, msg2, - "(&(CN=TemplateForeignSecurityPrincipal)(objectclass=foreignSecurityPrincipalTemplate))", + "ForeignSecurityPrincipal", &errstr); if (ret != 0) { ldb_asprintf_errstring(module->ldb, |