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