From b036986b3e8c07effde44b6262b3ff38ee68bb89 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 15 Jul 2003 22:58:36 +0000 Subject: [PATCH] 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. --- lib/http_ntlm.c | 31 +++++++++++++++++++++---------- 1 file 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 */