diff options
author | Jeremy Allison <jra@samba.org> | 2006-09-01 04:15:04 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:39:45 -0500 |
commit | 037eac706537110437b51a166cdb258a136cb626 (patch) | |
tree | 1fa0673a4d7554dd51b7edc06ad50545a3af03ea /source3/utils | |
parent | 27e37eab987d0618c5dd19446369aad59a588dd6 (diff) | |
download | samba-037eac706537110437b51a166cdb258a136cb626.tar.gz samba-037eac706537110437b51a166cdb258a136cb626.tar.bz2 samba-037eac706537110437b51a166cdb258a136cb626.zip |
r17979: Make ntlm_auth more intelligent about figuring out it's
domain and user args. if only given a parameter of the
form --username DOMAIN\user. When called by firefox
or other user apps they may not know what the domain
is (and they don't care). They just want to pass the
contents of $USERNAME without having to parse it
or guess a domain.
Jeremy.
(This used to be commit 5f51417916ed8bfc0dd08f44e669cb044fc83d01)
Diffstat (limited to 'source3/utils')
-rw-r--r-- | source3/utils/ntlm_auth.c | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c index c792b8e470..1d89c1df33 100644 --- a/source3/utils/ntlm_auth.c +++ b/source3/utils/ntlm_auth.c @@ -2274,6 +2274,37 @@ enum { } } + if (!opt_username || !*opt_username) { + x_fprintf(x_stderr, "username must be specified!\n\n"); + poptPrintHelp(pc, stderr, 0); + exit(1); + } else { + char *domain = SMB_STRDUP(opt_username); + char *p = strchr_m(domain, *lp_winbind_separator()); + if (p) { + opt_username = p+1; + *p = '\0'; + if (opt_domain && !strequal(opt_domain, domain)) { + x_fprintf(x_stderr, "Domain specified in username (%s) " + "doesn't match specified domain (%s)!\n\n", + domain, opt_domain); + poptPrintHelp(pc, stderr, 0); + exit(1); + } + opt_domain = domain; + } else { + SAFE_FREE(domain); + } + } + + if (opt_domain == NULL || !*opt_domain) { + opt_domain = get_winbind_domain(); + } + + if (opt_workstation == NULL) { + opt_workstation = ""; + } + if (helper_protocol) { int i; for (i=0; i<NUM_HELPER_MODES; i++) { @@ -2291,20 +2322,6 @@ enum { exit(1); } - if (!opt_username) { - x_fprintf(x_stderr, "username must be specified!\n\n"); - poptPrintHelp(pc, stderr, 0); - exit(1); - } - - if (opt_domain == NULL) { - opt_domain = get_winbind_domain(); - } - - if (opt_workstation == NULL) { - opt_workstation = ""; - } - if (opt_challenge.length) { if (!check_auth_crap()) { exit(1); |