aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2003-07-15 22:58:36 +0000
committerDaniel Stenberg <daniel@haxx.se>2003-07-15 22:58:36 +0000
commitb036986b3e8c07effde44b6262b3ff38ee68bb89 (patch)
tree408e1976eabf0c5f03bb8ad78da17c8dbebb721d /lib
parent938f1d1da7b6e4a578afbb17b1bb0795138e11fb (diff)
Dan Winship's patch added that makes use of DOMAIN\USER or DOMAIN/USER
for the user field. I changed it slightly to stay with strchr() only instead of strpbrk() for portability reasons.
Diffstat (limited to 'lib')
-rw-r--r--lib/http_ntlm.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/lib/http_ntlm.c b/lib/http_ntlm.c
index c874ca8a2..c1bc929ca 100644
--- a/lib/http_ntlm.c
+++ b/lib/http_ntlm.c
@@ -376,19 +376,27 @@ CURLcode Curl_output_ntlm(struct connectdata *conn)
#ifdef USE_NTRESPONSES
unsigned char ntresp[0x18]; /* fixed-size */
#endif
- int userlen = strlen(data->state.user);
-
+ const char *user;
+ int userlen;
+
+ user = strchr(data->state.user, '\\');
+ if(!user)
+ user = strchr(data->state.user, '/');
+
+ if (user) {
+ domain = data->state.user;
+ domlen = user - domain;
+ user++;
+ }
+ else
+ user = data->state.user;
+ userlen = strlen(user);
+
mkhash(data->state.passwd, &data->state.ntlm.nonce[0], lmresp
#ifdef USE_NTRESPONSES
, ntresp
#endif
-
-);
-
- /* these are going unicode */
- domlen *= 2;
- userlen *= 2;
- hostlen *= 2;
+ );
domoff = 64; /* always */
useroff = domoff + domlen;
@@ -478,7 +486,10 @@ CURLcode Curl_output_ntlm(struct connectdata *conn)
size=64;
ntlm[62]=ntlm[63]=0;
- memcpy(&ntlm[size], data->state.user, userlen);
+ memcpy(&ntlm[size], domain, domlen);
+ size += domlen;
+
+ memcpy(&ntlm[size], user, userlen);
size += userlen;
/* we append the binary hashes to the end of the blob */