svn commit: samba r17529 - in branches/SAMBA_4_0/source: dsdb/samdb dsdb/samdb/ldb_modules rpc_server/lsa

abartlet at samba.org abartlet at samba.org
Mon Aug 14 02:50:20 GMT 2006


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;
 	}
 



More information about the samba-cvs mailing list