diff options
-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 */ |