diff options
-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); |