summaryrefslogtreecommitdiff
path: root/source3/rpcclient/rpcclient.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2017-04-03 00:19:40 +0200
committerStefan Metzmacher <metze@samba.org>2017-04-05 14:09:23 +0200
commitf1e3c8ebb31fcd9ef9e1809a42a648442dffc1ee (patch)
tree8407d205b488bde21a242ddb5e5df5c5b911edbd /source3/rpcclient/rpcclient.c
parent5da471919d2b7ed45be574a8cb7c88351f894797 (diff)
downloadsamba-f1e3c8ebb31fcd9ef9e1809a42a648442dffc1ee.tar.gz
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 <metze@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org> Autobuild-User(master): Stefan Metzmacher <metze@samba.org> Autobuild-Date(master): Wed Apr 5 14:09:23 CEST 2017 on sn-devel-144
Diffstat (limited to 'source3/rpcclient/rpcclient.c')
-rw-r--r--source3/rpcclient/rpcclient.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c
index 9faf01b0890..6c851653a0e 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,