s3:trusts_util: pass dcname to trust_pw_change()
authorStefan Metzmacher <metze@samba.org>
Mon, 22 May 2017 13:36:29 +0000 (15:36 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 27 Jun 2017 14:57:45 +0000 (16:57 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12782

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/include/proto.h
source3/libsmb/trusts_util.c
source3/rpcclient/cmd_netlogon.c
source3/utils/net_rpc.c
source3/winbindd/winbindd_dual.c
source3/winbindd/winbindd_dual_srv.c

index 121c9eb480dc6f2ae760110bdde5344196ff2e9c..45841dca8ad381944e04481f9c9b3eb0fed00344 100644 (file)
@@ -853,6 +853,7 @@ NTSTATUS trust_pw_change(struct netlogon_creds_cli_context *context,
                         struct messaging_context *msg_ctx,
                         struct dcerpc_binding_handle *b,
                         const char *domain,
+                        const char *dcname,
                         bool force);
 
 /* The following definitions come from param/loadparm.c  */
index 2cc6264c905d30c8b4844fb16a978de800657e10..47b79b7336955dca1e3d52fce4de74bb09a827ff 100644 (file)
@@ -107,6 +107,7 @@ NTSTATUS trust_pw_change(struct netlogon_creds_cli_context *context,
                         struct messaging_context *msg_ctx,
                         struct dcerpc_binding_handle *b,
                         const char *domain,
+                        const char *dcname,
                         bool force)
 {
        TALLOC_CTX *frame = talloc_stackframe();
index 29d3096ecd2d0a84dc17042319f065aa09c56f59..4488ec2e0d9b5cbd868364cf8f3958110b2c2186 100644 (file)
@@ -835,6 +835,7 @@ static NTSTATUS cmd_netlogon_change_trust_pw(struct rpc_pipe_client *cli,
                                             const char **argv)
 {
         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       const char *dcname = cli->desthost;
 
         /* Check arguments */
 
@@ -847,6 +848,7 @@ static NTSTATUS cmd_netlogon_change_trust_pw(struct rpc_pipe_client *cli,
                                 rpcclient_msg_ctx,
                                 cli->binding_handle,
                                 lp_workgroup(),
+                                dcname,
                                 true); /* force */
        if (!NT_STATUS_IS_OK(result))
                goto done;
index 7059ebde3cab3ad4f28dd6c16fa871da6acc90bc..80536e5ab5eb3c187aaeac22996e84a9d3b0008b 100644 (file)
@@ -279,11 +279,19 @@ static NTSTATUS rpc_changetrustpw_internals(struct net_context *c,
                                        const char **argv)
 {
        NTSTATUS status;
+       const char *dcname = NULL;
+
+       if (cli == NULL) {
+               return NT_STATUS_INTERNAL_ERROR;
+       }
+
+       dcname = smbXcli_conn_remote_name(cli->conn);
 
        status = trust_pw_change(c->netlogon_creds,
                                 c->msg_ctx,
                                 pipe_hnd->binding_handle,
                                 c->opt_target_workgroup,
+                                dcname,
                                 true); /* force */
        if (!NT_STATUS_IS_OK(status)) {
                d_fprintf(stderr, _("Failed to change machine account password: %s\n"),
index c389e0013ad26ed465a7e976c5e32fd38556a79f..8636ccd7e0a06dbe536c227e69caeed7b8fc0cbb 100644 (file)
@@ -1095,6 +1095,7 @@ static void machine_password_change_handler(struct tevent_context *ctx,
                                 msg_ctx,
                                 netlogon_pipe->binding_handle,
                                 child->domain->name,
+                                child->domain->dcname,
                                 false); /* force */
 
        DEBUG(10, ("machine_password_change_handler: "
index ff4c93d922186d9139907e710aa655c9164789d0..5e953e7c3c661dfbdfabbb10a0640bfaac5fe94b 100644 (file)
@@ -734,6 +734,7 @@ NTSTATUS _wbint_ChangeMachineAccount(struct pipes_struct *p,
                                 msg_ctx,
                                 netlogon_pipe->binding_handle,
                                 domain->name,
+                                domain->dcname,
                                 true); /* force */
 
        /* Pass back result code - zero for success, other values for
@@ -1416,6 +1417,7 @@ reconnect:
 
        status = trust_pw_change(domain->conn.netlogon_creds,
                                 msg_ctx, b, domain->name,
+                                domain->dcname,
                                 true); /* force */
        if (!NT_STATUS_IS_OK(status)) {
                if (!retry && dcerpc_binding_handle_is_connected(b)) {