mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 16:48:49 -05:00
http_ntlm_wb: Move the type-2 message processing into a dedicated function
This brings the code inline with the other HTTP authentication mechanisms. Closes #3890
This commit is contained in:
parent
ab4616f8cb
commit
fe20826b58
@ -53,6 +53,8 @@
|
|||||||
#include "url.h"
|
#include "url.h"
|
||||||
#include "strerror.h"
|
#include "strerror.h"
|
||||||
#include "strdup.h"
|
#include "strdup.h"
|
||||||
|
#include "strcase.h"
|
||||||
|
|
||||||
/* The last 3 #include files should be in this order */
|
/* The last 3 #include files should be in this order */
|
||||||
#include "curl_printf.h"
|
#include "curl_printf.h"
|
||||||
#include "curl_memory.h"
|
#include "curl_memory.h"
|
||||||
@ -333,6 +335,30 @@ done:
|
|||||||
return CURLE_REMOTE_ACCESS_DENIED;
|
return CURLE_REMOTE_ACCESS_DENIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CURLcode Curl_input_ntlm_wb(struct connectdata *conn,
|
||||||
|
bool proxy,
|
||||||
|
const char *header)
|
||||||
|
{
|
||||||
|
(void) proxy;
|
||||||
|
|
||||||
|
if(!checkprefix("NTLM", header))
|
||||||
|
return CURLE_BAD_CONTENT_ENCODING;
|
||||||
|
|
||||||
|
header += strlen("NTLM");
|
||||||
|
while(*header && ISSPACE(*header))
|
||||||
|
header++;
|
||||||
|
|
||||||
|
if(*header) {
|
||||||
|
conn->challenge_header = strdup(header);
|
||||||
|
if(!conn->challenge_header)
|
||||||
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return CURLE_BAD_CONTENT_ENCODING;
|
||||||
|
|
||||||
|
return CURLE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is for creating ntlm header output by delegating challenge/response
|
* This is for creating ntlm header output by delegating challenge/response
|
||||||
* to Samba's winbind daemon helper ntlm_auth.
|
* to Samba's winbind daemon helper ntlm_auth.
|
||||||
|
@ -27,8 +27,11 @@
|
|||||||
#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
|
#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
|
||||||
defined(NTLM_WB_ENABLED)
|
defined(NTLM_WB_ENABLED)
|
||||||
|
|
||||||
/* this is for creating ntlm header output by delegating challenge/response
|
/* this is for ntlm header input */
|
||||||
to Samba's winbind daemon helper ntlm_auth */
|
CURLcode Curl_input_ntlm_wb(struct connectdata *conn, bool proxy,
|
||||||
|
const char *header);
|
||||||
|
|
||||||
|
/* this is for creating ntlm header output */
|
||||||
CURLcode Curl_output_ntlm_wb(struct connectdata *conn, bool proxy);
|
CURLcode Curl_output_ntlm_wb(struct connectdata *conn, bool proxy);
|
||||||
|
|
||||||
void Curl_http_auth_cleanup_ntlm_wb(struct connectdata *conn);
|
void Curl_http_auth_cleanup_ntlm_wb(struct connectdata *conn);
|
||||||
|
17
lib/http.c
17
lib/http.c
@ -919,19 +919,10 @@ CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
|
|||||||
*availp |= CURLAUTH_NTLM_WB;
|
*availp |= CURLAUTH_NTLM_WB;
|
||||||
authp->avail |= CURLAUTH_NTLM_WB;
|
authp->avail |= CURLAUTH_NTLM_WB;
|
||||||
|
|
||||||
/* Get the challenge-message which will be passed to
|
result = Curl_input_ntlm_wb(conn, proxy, auth);
|
||||||
* ntlm_auth for generating the type 3 message later */
|
if(result) {
|
||||||
while(*auth && ISSPACE(*auth))
|
infof(data, "Authentication problem. Ignoring this.\n");
|
||||||
auth++;
|
data->state.authproblem = TRUE;
|
||||||
if(checkprefix("NTLM", auth)) {
|
|
||||||
auth += strlen("NTLM");
|
|
||||||
while(*auth && ISSPACE(*auth))
|
|
||||||
auth++;
|
|
||||||
if(*auth) {
|
|
||||||
conn->challenge_header = strdup(auth);
|
|
||||||
if(!conn->challenge_header)
|
|
||||||
return CURLE_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user