From 35257001d62ec85c71b08fd1516ee74fc1ec30f7 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 3 Apr 2017 00:19:40 +0200 Subject: [PATCH] rpcclient: allow -U'OTHERDOMAIN\user' again I guess the primary reason for forcing lp_workgroup() was the usage of -U% together with schannel, see source3/script/tests/test_rpcclient_samlogon.sh BUG: https://bugzilla.samba.org/show_bug.cgi?id=12731 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider Autobuild-User(master): Stefan Metzmacher Autobuild-Date(master): Wed Apr 5 14:09:23 CEST 2017 on sn-devel-144 (cherry picked from commit f1e3c8ebb31fcd9ef9e1809a42a648442dffc1ee) --- source3/rpcclient/rpcclient.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index 9faf01b..6c85165 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -53,6 +53,7 @@ struct messaging_context *rpcclient_msg_ctx; struct user_auth_info *rpcclient_auth_info; struct cli_state *rpcclient_cli_state; struct netlogon_creds_cli_context *rpcclient_netlogon_creds; +static const char *rpcclient_netlogon_domain; /* List to hold groups of commands. * @@ -764,7 +765,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, cli, rpcclient_msg_ctx, cmd_entry->table, default_transport, - get_cmdline_auth_info_domain(auth_info), + rpcclient_netlogon_domain, &cmd_entry->rpc_pipe, talloc_autofree_context(), &rpcclient_netlogon_creds); @@ -787,7 +788,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, if (rpcclient_netlogon_creds == NULL && cmd_entry->use_netlogon_creds) { const char *dc_name = cmd_entry->rpc_pipe->desthost; - const char *domain = get_cmdline_auth_info_domain(auth_info); + const char *domain = rpcclient_netlogon_domain; struct cli_credentials *creds = NULL; ntresult = pdb_get_trust_credentials(domain, NULL, @@ -946,7 +947,6 @@ out_free: enum dcerpc_transport_t transport; uint32_t bflags = 0; const char *binding_string = NULL; - char *user, *domain, *q; const char *host; int signing_state = SMB_SIGNING_IPC_DEFAULT; @@ -1141,16 +1141,11 @@ out_free: flags |= CLI_FULL_CONNECTION_USE_NT_HASH; } - user = talloc_strdup(frame, get_cmdline_auth_info_username(rpcclient_auth_info)); - SMB_ASSERT(user != NULL); - domain = talloc_strdup(frame, lp_workgroup()); - SMB_ASSERT(domain != NULL); - set_cmdline_auth_info_domain(rpcclient_auth_info, domain); - - if ((q = strchr_m(user,'\\'))) { - *q = 0; - set_cmdline_auth_info_domain(rpcclient_auth_info, user); - set_cmdline_auth_info_username(rpcclient_auth_info, q+1); + rpcclient_netlogon_domain = get_cmdline_auth_info_domain(rpcclient_auth_info); + if (rpcclient_netlogon_domain == NULL || + rpcclient_netlogon_domain[0] == '\0') + { + rpcclient_netlogon_domain = lp_workgroup(); } nt_status = cli_full_connection(&cli, lp_netbios_name(), host, -- 1.9.1