svn commit: samba r9392 - in branches/SAMBA_4_0/source: kdc lib/ldb/common lib/ldb/include libnet ntptr/simple_ldb rpc_server/lsa rpc_server/samr

idra at samba.org idra at samba.org
Thu Aug 18 16:18:50 GMT 2005


Author: idra
Date: 2005-08-18 16:18:48 +0000 (Thu, 18 Aug 2005)
New Revision: 9392

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

Log:

Fix ldb_dn_compose to make build farm happy

Add ldb_dn_string_compose so that you can build a dn starting from a
struct ldb_dn base and a set of parameters to be composed in a format
string with the same syntax of printf


Modified:
   branches/SAMBA_4_0/source/kdc/hdb-ldb.c
   branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c
   branches/SAMBA_4_0/source/lib/ldb/include/ldb.h
   branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
   branches/SAMBA_4_0/source/ntptr/simple_ldb/ntptr_simple_ldb.c
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
   branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c


Changeset:
Modified: branches/SAMBA_4_0/source/kdc/hdb-ldb.c
===================================================================
--- branches/SAMBA_4_0/source/kdc/hdb-ldb.c	2005-08-18 15:02:01 UTC (rev 9391)
+++ branches/SAMBA_4_0/source/kdc/hdb-ldb.c	2005-08-18 16:18:48 UTC (rev 9392)
@@ -624,10 +624,9 @@
 	int count;
 	struct ldb_message **msg;
 	struct ldb_message_element *spnmappings;
-	struct ldb_dn *service_dn = ldb_dn_compose_string_dn(mem_ctx,
+	struct ldb_dn *service_dn = ldb_dn_string_compose(mem_ctx, realm_dn,
 						"CN=Directory Service,CN=Windows NT"
-						",CN=Services,CN=Configuration", 
-						realm_dn);
+						",CN=Services,CN=Configuration");
 	char *service_dn_str = ldb_dn_linearize(mem_ctx, service_dn);
 	const char *directory_attrs[] = {
 		"sPNMappings", 

Modified: branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c	2005-08-18 15:02:01 UTC (rev 9391)
+++ branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c	2005-08-18 16:18:48 UTC (rev 9392)
@@ -771,7 +771,9 @@
 		new->comp_num = dn1->comp_num;
 		new->components = talloc_array(new, struct ldb_dn_component, new->comp_num);
 	} else {
-		new = ldb_dn_copy_partial(mem_ctx, dn2, dn2->comp_num + dn1?dn1->comp_num:0);
+		int comp_num = dn2->comp_num;
+		if (dn1 != NULL) comp_num += dn1->comp_num;
+		new = ldb_dn_copy_partial(mem_ctx, dn2, comp_num);
 	}
 
 	if (dn1 == NULL) {
@@ -790,11 +792,26 @@
 	return NULL;
 }
 
-struct ldb_dn *ldb_dn_compose_string_dn(void *mem_ctx, const char *dn1, const struct ldb_dn *dn2)
+struct ldb_dn *ldb_dn_string_compose(void *mem_ctx, const struct ldb_dn *base, const char *child_fmt, ...)
 {
-	if (dn1 == NULL) return NULL;
+	struct ldb_dn *dn;
+	char *child_str;
+	va_list ap;
+	int ret;
+	
+	if (child_fmt == NULL) return NULL;
 
-	return ldb_dn_compose(mem_ctx, ldb_dn_explode(mem_ctx, dn1), dn2);
+	va_start(ap, child_fmt);
+	ret = vasprintf(&child_str, child_fmt, ap);
+	va_end(ap);
+
+	if (ret <= 0) return NULL;
+
+	dn = ldb_dn_compose(mem_ctx, ldb_dn_explode(mem_ctx, child_str), base);
+
+	free(child_str);
+
+	return dn;
 }
 
 struct ldb_dn_component *ldb_dn_get_rdn(void *mem_ctx, const struct ldb_dn *dn)

Modified: branches/SAMBA_4_0/source/lib/ldb/include/ldb.h
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/include/ldb.h	2005-08-18 15:02:01 UTC (rev 9391)
+++ branches/SAMBA_4_0/source/lib/ldb/include/ldb.h	2005-08-18 16:18:48 UTC (rev 9392)
@@ -371,7 +371,7 @@
 				 const struct ldb_dn_component *component,
 				 const struct ldb_dn *base);
 struct ldb_dn *ldb_dn_compose(void *mem_ctx, const struct ldb_dn *dn1, const struct ldb_dn *dn2);
-struct ldb_dn *ldb_dn_compose_string_dn(void *mem_ctx, const char *dn1, const struct ldb_dn *dn2);
+struct ldb_dn *ldb_dn_string_compose(void *mem_ctx, const struct ldb_dn *base, const char *child_fmt, ...);
 struct ldb_dn_component *ldb_dn_get_rdn(void *mem_ctx, const struct ldb_dn *dn);
 
 /* useful functions for ldb_message structure manipulation */

Modified: branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c	2005-08-18 15:02:01 UTC (rev 9391)
+++ branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c	2005-08-18 16:18:48 UTC (rev 9392)
@@ -337,11 +337,8 @@
 	if (add) {
 		samdb_msg_add_string(state->sam_ldb, mem_ctx, msg, 
 				     "objectClass", obj_class);
-		msg->dn = ldb_dn_build_child(mem_ctx,
-					     "CN", cn_name,
-					     ldb_dn_build_child(mem_ctx,
-								"CN", container,
-								state->base_dn[database]));
+		msg->dn = ldb_dn_string_compose(mem_ctx, state->base_dn[database],
+						"CN=%s, CN=%s", cn_name, container);
 		if (!msg->dn) {
 			return NT_STATUS_NO_MEMORY;		
 		}
@@ -477,11 +474,8 @@
 	if (add) {
 		samdb_msg_add_string(state->sam_ldb, mem_ctx, msg, 
 				     "objectClass", obj_class);
-		msg->dn = ldb_dn_build_child(mem_ctx,
-					     "CN", cn_name,
-					     ldb_dn_build_child(mem_ctx,
-								"CN", container,
-								state->base_dn[database]));
+		msg->dn = ldb_dn_string_compose(mem_ctx, state->base_dn[database],
+						"CN=%s, CN=%s", cn_name, container);
 		if (!msg->dn) {
 			return NT_STATUS_NO_MEMORY;		
 		}
@@ -694,11 +688,8 @@
 	if (add) {
 		samdb_msg_add_string(state->sam_ldb, mem_ctx, msg, 
 				     "objectClass", obj_class);
-		msg->dn = ldb_dn_build_child(mem_ctx,
-					     "CN", cn_name,
-					     ldb_dn_build_child(mem_ctx,
-								"CN", container,
-								state->base_dn[database]));
+		msg->dn = ldb_dn_string_compose(mem_ctx, state->base_dn[database],
+						"CN=%s, CN=%s", cn_name, container);
 		if (!msg->dn) {
 			return NT_STATUS_NO_MEMORY;		
 		}

Modified: branches/SAMBA_4_0/source/ntptr/simple_ldb/ntptr_simple_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/ntptr/simple_ldb/ntptr_simple_ldb.c	2005-08-18 15:02:01 UTC (rev 9391)
+++ branches/SAMBA_4_0/source/ntptr/simple_ldb/ntptr_simple_ldb.c	2005-08-18 16:18:48 UTC (rev 9392)
@@ -710,11 +710,7 @@
 	 * }
 	 */
 
-	base_dn = ldb_dn_compose_string_dn(mem_ctx,
-					   "CN=Forms",
-					   ldb_dn_build_child(mem_ctx,
-							      "CN", printer->object_name,
-							      ldb_dn_explode(mem_ctx, "CN=Printers")));
+	base_dn = ldb_dn_string_compose(mem_ctx, NULL, "CN=Forms, CN=%s, CN=Printers", printer->object_name);
 	W_ERROR_HAVE_NO_MEMORY(base_dn);
 
 	count = sptr_db_search(sptr_db, mem_ctx, base_dn, &msgs, NULL,

Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-08-18 15:02:01 UTC (rev 9391)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c	2005-08-18 16:18:48 UTC (rev 9392)
@@ -1774,10 +1774,7 @@
 			return NT_STATUS_INTERNAL_DB_CORRUPTION;
 		}
 
-		msg->dn = ldb_dn_build_child(mem_ctx,
-					     "cn", name,
-					     ldb_dn_build_child(mem_ctx,
-								"cn", "LSA Secrets", NULL));
+		msg->dn = ldb_dn_string_compose(mem_ctx, NULL, "cn=%s,cn=LSA Secrets", name);
 		samdb_msg_add_string(secret_state->sam_ldb, mem_ctx, msg, "cn", name);
 	} 
 

Modified: branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2005-08-18 15:02:01 UTC (rev 9391)
+++ branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c	2005-08-18 16:18:48 UTC (rev 9392)
@@ -554,11 +554,8 @@
 	}
 
 	/* add core elements to the ldb_message for the user */
-	msg->dn = ldb_dn_build_child(mem_ctx,
-				     "CN", groupname,
-				     ldb_dn_build_child(mem_ctx,
-							"CN", "Users",
-							d_state->domain_dn));
+	msg->dn = ldb_dn_string_compose(mem_ctx, d_state->domain_dn,
+					"CN=%s, CN=Users", groupname);
 	if (!msg->dn) {
 		return NT_STATUS_NO_MEMORY;
 	}
@@ -991,11 +988,8 @@
 	}
 
 	/* add core elements to the ldb_message for the alias */
-	msg->dn = ldb_dn_build_child(mem_ctx,
-				     "CN", alias_name,
-				     ldb_dn_build_child(mem_ctx,
-							"CN", "Users",
-							d_state->domain_dn));
+	msg->dn = ldb_dn_string_compose(mem_ctx, d_state->domain_dn,
+					"CN=%s, CN=Users", alias_name);
 	if (!msg->dn) {
 		return NT_STATUS_NO_MEMORY;
 	}



More information about the samba-cvs mailing list