From 776f5c65bf6123d4f6909724436c48fe900866f0 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 4 Feb 2014 09:59:54 +0100 Subject: [PATCH] s4:libnet: use helper functions to access dcerpc_binding->target_hostname If possible also specify the already known address as dcerpc_binding->host. Signed-off-by: Stefan Metzmacher Reviewed-by: Guenther Deschner --- source4/libnet/libnet_become_dc.c | 7 ++++--- source4/libnet/libnet_join.c | 2 +- source4/libnet/libnet_rpc.c | 10 ++-------- source4/libnet/libnet_unbecome_dc.c | 4 +++- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/source4/libnet/libnet_become_dc.c b/source4/libnet/libnet_become_dc.c index 9422172f693..6d00fcc37b1 100644 --- a/source4/libnet/libnet_become_dc.c +++ b/source4/libnet/libnet_become_dc.c @@ -1573,9 +1573,10 @@ static void becomeDC_drsuapi_connect_send(struct libnet_BecomeDC_state *s, { print_str = "print,"; } - binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[%s%sseal]", - s->source_dsa.dns_name, - krb5_str, print_str); + binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[%s%sseal,target_hostname=%s]", + s->source_dsa.address, + krb5_str, print_str, + s->source_dsa.dns_name); if (composite_nomem(binding_str, c)) return; c->status = dcerpc_parse_binding(s, binding_str, &drsuapi->binding); talloc_free(binding_str); diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c index 1c5253191de..f9578407de3 100644 --- a/source4/libnet/libnet_join.c +++ b/source4/libnet/libnet_join.c @@ -243,7 +243,7 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J /* Now we know the user's DN, open with LDAP, read and modify a few things */ remote_ldb_url = talloc_asprintf(tmp_ctx, "ldap://%s", - drsuapi_binding->target_hostname); + dcerpc_binding_get_string_option(drsuapi_binding, "target_hostname")); if (!remote_ldb_url) { r->out.error_string = NULL; talloc_free(tmp_ctx); diff --git a/source4/libnet/libnet_rpc.c b/source4/libnet/libnet_rpc.c index db48ea3f7db..19838d4fe31 100644 --- a/source4/libnet/libnet_rpc.c +++ b/source4/libnet/libnet_rpc.c @@ -79,7 +79,8 @@ static struct composite_context* libnet_RpcConnectSrv_send(struct libnet_context s->binding = talloc_asprintf(s, "ncacn_np:%s", r->in.name); break; case LIBNET_RPC_CONNECT_SERVER_ADDRESS: - s->binding = talloc_asprintf(s, "ncacn_np:%s", r->in.address); + s->binding = talloc_asprintf(s, "ncacn_np:%s[target_hostname=%s]", + r->in.address, r->in.name); break; case LIBNET_RPC_CONNECT_BINDING: @@ -121,13 +122,6 @@ static struct composite_context* libnet_RpcConnectSrv_send(struct libnet_context if (!composite_is_ok(c)) return c; } - if (r->level == LIBNET_RPC_CONNECT_SERVER_ADDRESS) { - b->target_hostname = talloc_strdup(b, r->in.name); - if (composite_nomem(b->target_hostname, c)) { - return c; - } - } - /* connect to remote dcerpc pipe */ pipe_connect_req = dcerpc_pipe_connect_b_send(c, b, r->in.dcerpc_iface, ctx->cred, c->event_ctx, diff --git a/source4/libnet/libnet_unbecome_dc.c b/source4/libnet/libnet_unbecome_dc.c index b0fe07b0d74..f575eb1fe67 100644 --- a/source4/libnet/libnet_unbecome_dc.c +++ b/source4/libnet/libnet_unbecome_dc.c @@ -543,7 +543,9 @@ static void unbecomeDC_drsuapi_connect_send(struct libnet_UnbecomeDC_state *s) struct composite_context *creq; char *binding_str; - binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[seal]", s->source_dsa.dns_name); + binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[seal,target_hostname=%s]", + s->source_dsa.address, + s->source_dsa.dns_name); if (composite_nomem(binding_str, c)) return; c->status = dcerpc_parse_binding(s, binding_str, &s->drsuapi.binding);