Dan Winship's patch added that makes use of DOMAIN\USER or DOMAIN/USER
authorDaniel Stenberg <daniel@haxx.se>
Tue, 15 Jul 2003 22:58:36 +0000 (22:58 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 15 Jul 2003 22:58:36 +0000 (22:58 +0000)
for the user field. I changed it slightly to stay with strchr() only instead
of strpbrk() for portability reasons.

lib/http_ntlm.c

index c874ca8..c1bc929 100644 (file)
@@ -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 */