summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2006-09-01 04:15:04 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:39:45 -0500
commit037eac706537110437b51a166cdb258a136cb626 (patch)
tree1fa0673a4d7554dd51b7edc06ad50545a3af03ea
parent27e37eab987d0618c5dd19446369aad59a588dd6 (diff)
downloadsamba-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)
-rw-r--r--source3/utils/ntlm_auth.c45
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);