mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
ntlm: Moved SSPI clean-up code into SASL module
This commit is contained in:
parent
79931c5aeb
commit
474442dd56
@ -39,6 +39,7 @@
|
|||||||
#include "curl_ntlm.h"
|
#include "curl_ntlm.h"
|
||||||
#include "curl_ntlm_msgs.h"
|
#include "curl_ntlm_msgs.h"
|
||||||
#include "curl_ntlm_wb.h"
|
#include "curl_ntlm_wb.h"
|
||||||
|
#include "curl_sasl.h"
|
||||||
#include "url.h"
|
#include "url.h"
|
||||||
#include "curl_memory.h"
|
#include "curl_memory.h"
|
||||||
|
|
||||||
@ -229,8 +230,8 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
|
|||||||
void Curl_http_ntlm_cleanup(struct connectdata *conn)
|
void Curl_http_ntlm_cleanup(struct connectdata *conn)
|
||||||
{
|
{
|
||||||
#ifdef USE_WINDOWS_SSPI
|
#ifdef USE_WINDOWS_SSPI
|
||||||
Curl_ntlm_sspi_cleanup(&conn->ntlm);
|
Curl_sasl_ntlm_cleanup(&conn->ntlm);
|
||||||
Curl_ntlm_sspi_cleanup(&conn->proxyntlm);
|
Curl_sasl_ntlm_cleanup(&conn->proxyntlm);
|
||||||
#elif defined(NTLM_WB_ENABLED)
|
#elif defined(NTLM_WB_ENABLED)
|
||||||
Curl_ntlm_wb_cleanup(conn);
|
Curl_ntlm_wb_cleanup(conn);
|
||||||
#else
|
#else
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
|
|
||||||
#define BUILDING_CURL_NTLM_MSGS_C
|
#define BUILDING_CURL_NTLM_MSGS_C
|
||||||
#include "curl_ntlm_msgs.h"
|
#include "curl_ntlm_msgs.h"
|
||||||
|
#include "curl_sasl.h"
|
||||||
|
|
||||||
#define _MPRINTF_REPLACE /* use our functions only */
|
#define _MPRINTF_REPLACE /* use our functions only */
|
||||||
#include <curl/mprintf.h>
|
#include <curl/mprintf.h>
|
||||||
@ -338,36 +339,6 @@ CURLcode Curl_ntlm_decode_type2_message(struct SessionHandle *data,
|
|||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_WINDOWS_SSPI
|
|
||||||
void Curl_ntlm_sspi_cleanup(struct ntlmdata *ntlm)
|
|
||||||
{
|
|
||||||
/* Free our security context */
|
|
||||||
if(ntlm->context) {
|
|
||||||
s_pSecFn->DeleteSecurityContext(ntlm->context);
|
|
||||||
free(ntlm->context);
|
|
||||||
ntlm->context = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Free our credentials handle */
|
|
||||||
if(ntlm->credentials) {
|
|
||||||
s_pSecFn->FreeCredentialsHandle(ntlm->credentials);
|
|
||||||
free(ntlm->credentials);
|
|
||||||
ntlm->credentials = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Free our identity */
|
|
||||||
Curl_sspi_free_identity(ntlm->p_identity);
|
|
||||||
ntlm->p_identity = NULL;
|
|
||||||
|
|
||||||
/* Free the input and output tokens */
|
|
||||||
Curl_safefree(ntlm->input_token);
|
|
||||||
Curl_safefree(ntlm->output_token);
|
|
||||||
|
|
||||||
/* Reset any variables */
|
|
||||||
ntlm->token_max = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef USE_WINDOWS_SSPI
|
#ifndef USE_WINDOWS_SSPI
|
||||||
/* copy the source to the destination and fill in zeroes in every
|
/* copy the source to the destination and fill in zeroes in every
|
||||||
other destination byte! */
|
other destination byte! */
|
||||||
@ -430,7 +401,7 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,
|
|||||||
unsigned long attrs;
|
unsigned long attrs;
|
||||||
TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
|
TimeStamp expiry; /* For Windows 9x compatibility of SSPI calls */
|
||||||
|
|
||||||
Curl_ntlm_sspi_cleanup(ntlm);
|
Curl_sasl_ntlm_cleanup(ntlm);
|
||||||
|
|
||||||
/* Query the security package for NTLM */
|
/* Query the security package for NTLM */
|
||||||
status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NTLM),
|
status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NTLM),
|
||||||
@ -695,7 +666,7 @@ CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
|
|||||||
result = Curl_base64_encode(NULL, (char *)ntlm->output_token, size,
|
result = Curl_base64_encode(NULL, (char *)ntlm->output_token, size,
|
||||||
outptr, outlen);
|
outptr, outlen);
|
||||||
|
|
||||||
Curl_ntlm_sspi_cleanup(ntlm);
|
Curl_sasl_ntlm_cleanup(ntlm);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
@ -52,14 +52,6 @@ CURLcode Curl_ntlm_decode_type2_target(struct SessionHandle *data,
|
|||||||
size_t size,
|
size_t size,
|
||||||
struct ntlmdata* ntlm);
|
struct ntlmdata* ntlm);
|
||||||
|
|
||||||
|
|
||||||
/* This is to clean up the ntlm data structure */
|
|
||||||
#ifdef USE_WINDOWS_SSPI
|
|
||||||
void Curl_ntlm_sspi_cleanup(struct ntlmdata *ntlm);
|
|
||||||
#else
|
|
||||||
#define Curl_ntlm_sspi_cleanup(x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* NTLM buffer fixed size, large enough for long user + host + domain */
|
/* NTLM buffer fixed size, large enough for long user + host + domain */
|
||||||
#define NTLM_BUFSIZE 1024
|
#define NTLM_BUFSIZE 1024
|
||||||
|
|
||||||
|
@ -1243,7 +1243,7 @@ void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused)
|
|||||||
#ifdef USE_NTLM
|
#ifdef USE_NTLM
|
||||||
/* Cleanup the ntlm structure */
|
/* Cleanup the ntlm structure */
|
||||||
else if(authused == SASL_MECH_NTLM) {
|
else if(authused == SASL_MECH_NTLM) {
|
||||||
Curl_ntlm_sspi_cleanup(&conn->ntlm);
|
Curl_sasl_ntlm_cleanup(&conn->ntlm);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
|
@ -149,6 +149,11 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
|
|||||||
struct ntlmdata *ntlm,
|
struct ntlmdata *ntlm,
|
||||||
char **outptr, size_t *outlen);
|
char **outptr, size_t *outlen);
|
||||||
|
|
||||||
|
#if defined(USE_WINDOWS_SSPI)
|
||||||
|
/* This is used to clean up the ntlm specific data */
|
||||||
|
void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* USE_NTLM */
|
#endif /* USE_NTLM */
|
||||||
|
|
||||||
#if defined(USE_KRB5)
|
#if defined(USE_KRB5)
|
||||||
|
@ -485,6 +485,46 @@ void Curl_sasl_digest_cleanup(struct digestdata *digest)
|
|||||||
}
|
}
|
||||||
#endif /* !CURL_DISABLE_CRYPTO_AUTH */
|
#endif /* !CURL_DISABLE_CRYPTO_AUTH */
|
||||||
|
|
||||||
|
#if defined USE_NTLM
|
||||||
|
/*
|
||||||
|
* Curl_sasl_ntlm_cleanup()
|
||||||
|
*
|
||||||
|
* This is used to clean up the ntlm specific data.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* ntlm [in/out] - The ntlm data struct being cleaned up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm)
|
||||||
|
{
|
||||||
|
/* Free our security context */
|
||||||
|
if(ntlm->context) {
|
||||||
|
s_pSecFn->DeleteSecurityContext(ntlm->context);
|
||||||
|
free(ntlm->context);
|
||||||
|
ntlm->context = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free our credentials handle */
|
||||||
|
if(ntlm->credentials) {
|
||||||
|
s_pSecFn->FreeCredentialsHandle(ntlm->credentials);
|
||||||
|
free(ntlm->credentials);
|
||||||
|
ntlm->credentials = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free our identity */
|
||||||
|
Curl_sspi_free_identity(ntlm->p_identity);
|
||||||
|
ntlm->p_identity = NULL;
|
||||||
|
|
||||||
|
/* Free the input and output tokens */
|
||||||
|
Curl_safefree(ntlm->input_token);
|
||||||
|
Curl_safefree(ntlm->output_token);
|
||||||
|
|
||||||
|
/* Reset any variables */
|
||||||
|
ntlm->token_max = 0;
|
||||||
|
}
|
||||||
|
#endif /* USE_NTLM */
|
||||||
|
|
||||||
#if defined(USE_KRB5)
|
#if defined(USE_KRB5)
|
||||||
/*
|
/*
|
||||||
* Curl_sasl_create_gssapi_user_message()
|
* Curl_sasl_create_gssapi_user_message()
|
||||||
|
Loading…
Reference in New Issue
Block a user