diff options
author | Daniel Stenberg <daniel@haxx.se> | 2003-07-15 22:58:36 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2003-07-15 22:58:36 +0000 |
commit | b036986b3e8c07effde44b6262b3ff38ee68bb89 (patch) | |
tree | 408e1976eabf0c5f03bb8ad78da17c8dbebb721d | |
parent | 938f1d1da7b6e4a578afbb17b1bb0795138e11fb (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.
-rw-r--r-- | lib/http_ntlm.c | 31 |
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 */ |