diff options
author | Andrew Bartlett <abartlet@samba.org> | 2006-08-14 02:50:18 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:15:33 -0500 |
commit | a993f53d525799df410bab1061fdb28f52379b3c (patch) | |
tree | 3e5f6d8419301e7880975ac604676216a3f048ad /source4/dsdb/samdb | |
parent | 0cc8a1780df94cdec90942b1cbf5d4059627bf8e (diff) | |
download | samba-a993f53d525799df410bab1061fdb28f52379b3c.tar.gz samba-a993f53d525799df410bab1061fdb28f52379b3c.tar.bz2 samba-a993f53d525799df410bab1061fdb28f52379b3c.zip |
r17529: Simo doesn't like the use of the internal ldb_errstring in functions
not used purely as ldb module helper functions. This now passes these
strings back as explicit parameters.
Andrew Bartlett
(This used to be commit 9c1cd9c2c6bcd9d056a7c9caafacdd573562ebbc)
Diffstat (limited to 'source4/dsdb/samdb')
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/samldb.c | 36 | ||||
-rw-r--r-- | source4/dsdb/samdb/samdb.c | 14 |
2 files changed, 37 insertions, 13 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c index 67724d56b5..e9ddb7cad7 100644 --- a/source4/dsdb/samdb/ldb_modules/samldb.c +++ b/source4/dsdb/samdb/ldb_modules/samldb.c @@ -435,6 +435,7 @@ static int samldb_fill_group_object(struct ldb_module *module, const struct ldb_ struct ldb_message *msg2; struct ldb_dn_component *rdn; TALLOC_CTX *mem_ctx = talloc_new(msg); + char *errstr; if (!mem_ctx) { return LDB_ERR_OPERATIONS_ERROR; } @@ -447,8 +448,11 @@ static int samldb_fill_group_object(struct ldb_module *module, const struct ldb_ return LDB_ERR_OPERATIONS_ERROR; } - ret = samdb_copy_template(module->ldb, msg2, "(&(CN=TemplateGroup)(objectclass=groupTemplate))"); + ret = samdb_copy_template(module->ldb, msg2, + "(&(CN=TemplateGroup)(objectclass=groupTemplate))", + &errstr); if (ret != 0) { + talloc_free(mem_ctx); return ret; } @@ -494,6 +498,7 @@ static int samldb_fill_user_or_computer_object(struct ldb_module *module, const struct ldb_message *msg2; struct ldb_dn_component *rdn; TALLOC_CTX *mem_ctx = talloc_new(msg); + char *errstr; if (!mem_ctx) { return LDB_ERR_OPERATIONS_ERROR; } @@ -508,9 +513,14 @@ 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))"); + ret = samdb_copy_template(module->ldb, msg2, + "(&(CN=TemplateComputer)(objectclass=userTemplate))", + &errstr); if (ret) { - ldb_debug(module->ldb, LDB_DEBUG_WARNING, "samldb_fill_user_or_computer_object: Error copying computer template!\n"); + ldb_asprintf_errstring(module->ldb, + "samldb_fill_user_or_computer_object: " + "Error copying computer template: %s", + errstr); talloc_free(mem_ctx); return ret; } @@ -528,9 +538,13 @@ static int samldb_fill_user_or_computer_object(struct ldb_module *module, const } } else { - ret = samdb_copy_template(module->ldb, msg2, "(&(CN=TemplateUser)(objectclass=userTemplate))"); + ret = samdb_copy_template(module->ldb, msg2, + "(&(CN=TemplateUser)(objectclass=userTemplate))", + &errstr); if (ret) { - ldb_debug(module->ldb, LDB_DEBUG_WARNING, "samldb_fill_user_or_computer_object: Error copying user template!\n"); + ldb_asprintf_errstring(module->ldb, + "samldb_fill_user_or_computer_object: Error copying user template: %s\n", + errstr); talloc_free(mem_ctx); return ret; } @@ -581,7 +595,7 @@ static int samldb_fill_user_or_computer_object(struct ldb_module *module, const } static int samldb_fill_foreignSecurityPrincipal_object(struct ldb_module *module, const struct ldb_message *msg, - struct ldb_message **ret_msg) + struct ldb_message **ret_msg) { struct ldb_message *msg2; struct ldb_dn_component *rdn; @@ -589,6 +603,7 @@ static int samldb_fill_foreignSecurityPrincipal_object(struct ldb_module *module struct dom_sid *sid; const char *dom_attrs[] = { "name", NULL }; struct ldb_message **dom_msgs; + char *errstr; int ret; TALLOC_CTX *mem_ctx = talloc_new(msg); @@ -604,9 +619,14 @@ static int samldb_fill_foreignSecurityPrincipal_object(struct ldb_module *module return LDB_ERR_OPERATIONS_ERROR; } - ret = samdb_copy_template(module->ldb, msg2, "(&(CN=TemplateForeignSecurityPrincipal)(objectclass=foreignSecurityPrincipalTemplate))"); + ret = samdb_copy_template(module->ldb, msg2, + "(&(CN=TemplateForeignSecurityPrincipal)(objectclass=foreignSecurityPrincipalTemplate))", + &errstr); if (ret != 0) { - ldb_debug(module->ldb, LDB_DEBUG_WARNING, "samldb_fill_foreignSecurityPrincipal_object: Error copying template!\n"); + ldb_asprintf_errstring(module->ldb, + "samldb_fill_foreignSecurityPrincipal_object: " + "Error copying template: %s", + errstr); talloc_free(mem_ctx); return ret; } diff --git a/source4/dsdb/samdb/samdb.c b/source4/dsdb/samdb/samdb.c index a659c66725..81b5afb2ee 100644 --- a/source4/dsdb/samdb/samdb.c +++ b/source4/dsdb/samdb/samdb.c @@ -674,11 +674,14 @@ int samdb_find_or_add_attribute(struct ldb_context *ldb, struct ldb_message *msg copy from a template record to a message */ int samdb_copy_template(struct ldb_context *ldb, - struct ldb_message *msg, const char *filter) + struct ldb_message *msg, const char *filter, + char **errstring) { struct ldb_result *res; struct ldb_message *t; int ret, i, j; + + *errstring = NULL; struct ldb_dn *basedn = ldb_dn_explode(ldb, "cn=Templates"); @@ -686,11 +689,12 @@ int samdb_copy_template(struct ldb_context *ldb, ret = ldb_search(ldb, basedn, LDB_SCOPE_SUBTREE, filter, NULL, &res); talloc_free(basedn); if (ret != LDB_SUCCESS) { + *errstring = talloc_steal(msg, ldb_errstring(ldb)); return ret; } if (res->count != 1) { - DEBUG(1, ("samdb_copy_template: ERROR: template '%s' matched %d records, expected 1\n", filter, - res->count)); + *errstring = talloc_asprintf(msg, "samdb_copy_template: ERROR: template '%s' matched %d records, expected 1\n", filter, + res->count); talloc_free(res); return LDB_ERR_OPERATIONS_ERROR; } @@ -719,7 +723,7 @@ int samdb_copy_template(struct ldb_context *ldb, ret = samdb_find_or_add_value(ldb, msg, el->name, (char *)el->values[j].data); if (ret) { - DEBUG(1, ( "Adding objectClass %s failed.\n", el->values[j].data)); + *errstring = talloc_asprintf(msg, "Adding objectClass %s failed.\n", el->values[j].data); talloc_free(res); return ret; } @@ -727,7 +731,7 @@ int samdb_copy_template(struct ldb_context *ldb, ret = samdb_find_or_add_attribute(ldb, msg, el->name, (char *)el->values[j].data); if (ret) { - DEBUG(1, ("Adding attribute %s failed.\n", el->name)); + *errstring = talloc_asprintf(msg, "Adding attribute %s failed.\n", el->name); talloc_free(res); return ret; } |