Author: abartlet
Date: 2006-08-14 02:50:18 +0000 (Mon, 14 Aug 2006)
New Revision: 17529

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17529

Log:
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

Modified:
   branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/samldb.c
   branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c


Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/samldb.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/samldb.c   2006-08-14 
01:48:32 UTC (rev 17528)
+++ branches/SAMBA_4_0/source/dsdb/samdb/ldb_modules/samldb.c   2006-08-14 
02:50:18 UTC (rev 17529)
@@ -435,6 +435,7 @@
        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 @@
                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 @@
        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 @@
 
        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 @@
                }
                
        } 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_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 @@
        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 @@
                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;
        }

Modified: branches/SAMBA_4_0/source/dsdb/samdb/samdb.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/samdb/samdb.c        2006-08-14 01:48:32 UTC 
(rev 17528)
+++ branches/SAMBA_4_0/source/dsdb/samdb/samdb.c        2006-08-14 02:50:18 UTC 
(rev 17529)
@@ -674,11 +674,14 @@
   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 @@
        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 @@
                                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 @@
                                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;
                                }

Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c       2006-08-14 
01:48:32 UTC (rev 17528)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c       2006-08-14 
02:50:18 UTC (rev 17529)
@@ -1769,6 +1769,7 @@
        struct lsa_secret_state *secret_state;
        struct dcesrv_handle *handle;
        struct ldb_message **msgs, *msg;
+       char *errstr;
        const char *attrs[] = {
                NULL
        };
@@ -1861,10 +1862,10 @@
 
        /* pull in all the template attributes.  Note this is always from the 
global samdb */
        ret = samdb_copy_template(secret_state->policy->sam_ldb, msg, 
-                                 
"(&(cn=TemplateSecret)(objectclass=secretTemplate))");
+                                 
"(&(cn=TemplateSecret)(objectclass=secretTemplate))", &errstr);
        if (ret != 0) {
-               DEBUG(0,("Failed to load TemplateSecret from samdb: %s\n", 
-                        ldb_errstring(secret_state->policy->sam_ldb)));
+               DEBUG(0,("Failed to load TemplateSecret from samdb: %s\n",
+                        errstr));
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 

Reply via email to