summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2019-05-18 17:05:04 +0100
committerSteve Holme <steve_holme@hotmail.com>2019-05-18 19:00:51 +0100
commitbd21fc9d2f266e801f3846cf0dd7e9f183358a43 (patch)
treec8d1df0a02435ed2a8895911ee0b65213e8743ea
parent697b1f911b6fee51ff2b271a292488fd7f9cdcda (diff)
downloadcurl-bd21fc9d2f266e801f3846cf0dd7e9f183358a43.tar.gz
http_ntlm_wb: Return the correct error on receiving an empty auth message
Missed in fe20826b as it wasn't implemented in http.c in b4d6db83. Closes #3894
-rw-r--r--lib/curl_ntlm_wb.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/curl_ntlm_wb.c b/lib/curl_ntlm_wb.c
index 2400ff091..2aa2289b2 100644
--- a/lib/curl_ntlm_wb.c
+++ b/lib/curl_ntlm_wb.c
@@ -339,7 +339,7 @@ CURLcode Curl_input_ntlm_wb(struct connectdata *conn,
bool proxy,
const char *header)
{
- (void) proxy;
+ curlntlm *state = proxy ? &conn->proxy_ntlm_state : &conn->http_ntlm_state;
if(!checkprefix("NTLM", header))
return CURLE_BAD_CONTENT_ENCODING;
@@ -352,9 +352,17 @@ CURLcode Curl_input_ntlm_wb(struct connectdata *conn,
conn->challenge_header = strdup(header);
if(!conn->challenge_header)
return CURLE_OUT_OF_MEMORY;
+
+ *state = NTLMSTATE_TYPE2; /* We got a type-2 message */
+ }
+ else {
+ if(*state >= NTLMSTATE_TYPE1) {
+ infof(conn->data, "NTLM handshake failure (internal error)\n");
+ return CURLE_REMOTE_ACCESS_DENIED;
+ }
+
+ *state = NTLMSTATE_TYPE1; /* We should send away a type-1 */
}
- else
- return CURLE_BAD_CONTENT_ENCODING;
return CURLE_OK;
}