From: Stefan Metzmacher Date: Thu, 30 Jan 2014 21:04:11 +0000 (+0100) Subject: s4:libnet: make use of dcerpc_binding_[g|s]et_*() in libnet_join.c X-Git-Tag: tdb-1.2.13~407 X-Git-Url: http://git.samba.org/samba.git/?p=sfrench%2Fsamba-autobuild%2F.git;a=commitdiff_plain;h=98e2b3c28f05ee3c23d16c9b8eaae65959c93de1 s4:libnet: make use of dcerpc_binding_[g|s]et_*() in libnet_join.c Signed-off-by: Stefan Metzmacher Reviewed-by: Guenther Deschner --- diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c index 150bd6a1ab4..1c5253191de 100644 --- a/source4/libnet/libnet_join.c +++ b/source4/libnet/libnet_join.c @@ -57,6 +57,7 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J struct dcerpc_pipe *drsuapi_pipe; struct dcerpc_binding *drsuapi_binding; + enum dcerpc_transport_t transport; struct drsuapi_DsBind r_drsuapi_bind; struct drsuapi_DsCrackNames r_crack_names; struct drsuapi_DsNameString names[1]; @@ -101,13 +102,37 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J return NT_STATUS_NO_MEMORY; } + transport = dcerpc_binding_get_transport(drsuapi_binding); /* DRSUAPI is only available on IP_TCP, and locally on NCALRPC */ - if (drsuapi_binding->transport != NCALRPC) { - drsuapi_binding->transport = NCACN_IP_TCP; + if (transport != NCALRPC) { + status = dcerpc_binding_set_transport(drsuapi_binding, NCACN_IP_TCP); + if (!NT_STATUS_IS_OK(status)) { + r->out.error_string = talloc_asprintf(r, + "dcerpc_binding_set_transport failed: %s", + nt_errstr(status)); + talloc_free(tmp_ctx); + return status; + } + } + + status = dcerpc_binding_set_string_option(drsuapi_binding, "endpoint", NULL); + if (!NT_STATUS_IS_OK(status)) { + r->out.error_string = talloc_asprintf(r, + "dcerpc_binding_set_string_option failed: %s", + nt_errstr(status)); + talloc_free(tmp_ctx); + return status; + } + + status = dcerpc_binding_set_flags(drsuapi_binding, DCERPC_SEAL, 0); + if (!NT_STATUS_IS_OK(status)) { + r->out.error_string = talloc_asprintf(r, + "dcerpc_binding_set_flags failed: %s", + nt_errstr(status)); + talloc_free(tmp_ctx); + return status; } - drsuapi_binding->endpoint = NULL; - drsuapi_binding->flags |= DCERPC_SEAL; status = dcerpc_pipe_connect_b(tmp_ctx, &drsuapi_pipe,