mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
Curl_base64_encode: always call with a real data handle.
Some calls in different modules were setting the data handle to NULL, causing segmentation faults when using builds that enable character code conversions.
This commit is contained in:
parent
70231d6a65
commit
6869d65f54
@ -331,7 +331,8 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn,
|
|||||||
sasl->authused = SASL_MECH_NTLM;
|
sasl->authused = SASL_MECH_NTLM;
|
||||||
|
|
||||||
if(force_ir || data->set.sasl_ir)
|
if(force_ir || data->set.sasl_ir)
|
||||||
result = Curl_auth_create_ntlm_type1_message(conn->user, conn->passwd,
|
result = Curl_auth_create_ntlm_type1_message(data,
|
||||||
|
conn->user, conn->passwd,
|
||||||
&conn->ntlm, &resp, &len);
|
&conn->ntlm, &resp, &len);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -493,7 +494,8 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn,
|
|||||||
#ifdef USE_NTLM
|
#ifdef USE_NTLM
|
||||||
case SASL_NTLM:
|
case SASL_NTLM:
|
||||||
/* Create the type-1 message */
|
/* Create the type-1 message */
|
||||||
result = Curl_auth_create_ntlm_type1_message(conn->user, conn->passwd,
|
result = Curl_auth_create_ntlm_type1_message(data,
|
||||||
|
conn->user, conn->passwd,
|
||||||
&conn->ntlm, &resp, &len);
|
&conn->ntlm, &resp, &len);
|
||||||
newstate = SASL_NTLM_TYPE2MSG;
|
newstate = SASL_NTLM_TYPE2MSG;
|
||||||
break;
|
break;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -170,8 +170,8 @@ CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy)
|
|||||||
case NTLMSTATE_TYPE1:
|
case NTLMSTATE_TYPE1:
|
||||||
default: /* for the weird cases we (re)start here */
|
default: /* for the weird cases we (re)start here */
|
||||||
/* Create a type-1 message */
|
/* Create a type-1 message */
|
||||||
result = Curl_auth_create_ntlm_type1_message(userp, passwdp, ntlm, &base64,
|
result = Curl_auth_create_ntlm_type1_message(conn->data, userp, passwdp,
|
||||||
&len);
|
ntlm, &base64, &len);
|
||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -350,6 +350,7 @@ static void unicodecpy(unsigned char *dest, const char *src, size_t length)
|
|||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
*
|
*
|
||||||
|
* data [in] - The session handle.
|
||||||
* userp [in] - The user name in the format User or Domain\User.
|
* userp [in] - The user name in the format User or Domain\User.
|
||||||
* passdwp [in] - The user's password.
|
* passdwp [in] - The user's password.
|
||||||
* ntlm [in/out] - The NTLM data struct being used and modified.
|
* ntlm [in/out] - The NTLM data struct being used and modified.
|
||||||
@ -359,7 +360,8 @@ static void unicodecpy(unsigned char *dest, const char *src, size_t length)
|
|||||||
*
|
*
|
||||||
* Returns CURLE_OK on success.
|
* Returns CURLE_OK on success.
|
||||||
*/
|
*/
|
||||||
CURLcode Curl_auth_create_ntlm_type1_message(const char *userp,
|
CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
|
||||||
|
const char *userp,
|
||||||
const char *passwdp,
|
const char *passwdp,
|
||||||
struct ntlmdata *ntlm,
|
struct ntlmdata *ntlm,
|
||||||
char **outptr, size_t *outlen)
|
char **outptr, size_t *outlen)
|
||||||
@ -458,7 +460,7 @@ CURLcode Curl_auth_create_ntlm_type1_message(const char *userp,
|
|||||||
});
|
});
|
||||||
|
|
||||||
/* Return with binary blob encoded into base64 */
|
/* Return with binary blob encoded into base64 */
|
||||||
return Curl_base64_encode(NULL, (char *)ntlmbuf, size, outptr, outlen);
|
return Curl_base64_encode(data, (char *)ntlmbuf, size, outptr, outlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -827,7 +829,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
|
|||||||
return CURLE_CONV_FAILED;
|
return CURLE_CONV_FAILED;
|
||||||
|
|
||||||
/* Return with binary blob encoded into base64 */
|
/* Return with binary blob encoded into base64 */
|
||||||
result = Curl_base64_encode(NULL, (char *)ntlmbuf, size, outptr, outlen);
|
result = Curl_base64_encode(data, (char *)ntlmbuf, size, outptr, outlen);
|
||||||
|
|
||||||
Curl_auth_ntlm_cleanup(ntlm);
|
Curl_auth_ntlm_cleanup(ntlm);
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -66,6 +66,7 @@ bool Curl_auth_is_ntlm_supported(void)
|
|||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
*
|
*
|
||||||
|
* data [in] - The session handle.
|
||||||
* userp [in] - The user name in the format User or Domain\User.
|
* userp [in] - The user name in the format User or Domain\User.
|
||||||
* passdwp [in] - The user's password.
|
* passdwp [in] - The user's password.
|
||||||
* ntlm [in/out] - The NTLM data struct being used and modified.
|
* ntlm [in/out] - The NTLM data struct being used and modified.
|
||||||
@ -75,7 +76,8 @@ bool Curl_auth_is_ntlm_supported(void)
|
|||||||
*
|
*
|
||||||
* Returns CURLE_OK on success.
|
* Returns CURLE_OK on success.
|
||||||
*/
|
*/
|
||||||
CURLcode Curl_auth_create_ntlm_type1_message(const char *userp,
|
CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
|
||||||
|
const char *userp,
|
||||||
const char *passwdp,
|
const char *passwdp,
|
||||||
struct ntlmdata *ntlm,
|
struct ntlmdata *ntlm,
|
||||||
char **outptr, size_t *outlen)
|
char **outptr, size_t *outlen)
|
||||||
@ -166,7 +168,7 @@ CURLcode Curl_auth_create_ntlm_type1_message(const char *userp,
|
|||||||
return CURLE_RECV_ERROR;
|
return CURLE_RECV_ERROR;
|
||||||
|
|
||||||
/* Base64 encode the response */
|
/* Base64 encode the response */
|
||||||
return Curl_base64_encode(NULL, (char *) ntlm->output_token,
|
return Curl_base64_encode(data, (char *) ntlm->output_token,
|
||||||
type_1_buf.cbBuffer, outptr, outlen);
|
type_1_buf.cbBuffer, outptr, outlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014 - 2016, Steve Holme, <steve_holme@hotmail.com>.
|
* Copyright (C) 2014 - 2017, Steve Holme, <steve_holme@hotmail.com>.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -119,7 +119,8 @@ void Curl_auth_digest_cleanup(struct digestdata *digest);
|
|||||||
bool Curl_auth_is_ntlm_supported(void);
|
bool Curl_auth_is_ntlm_supported(void);
|
||||||
|
|
||||||
/* This is used to generate a base64 encoded NTLM type-1 message */
|
/* This is used to generate a base64 encoded NTLM type-1 message */
|
||||||
CURLcode Curl_auth_create_ntlm_type1_message(const char *userp,
|
CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
|
||||||
|
const char *userp,
|
||||||
const char *passwdp,
|
const char *passwdp,
|
||||||
struct ntlmdata *ntlm,
|
struct ntlmdata *ntlm,
|
||||||
char **outptr,
|
char **outptr,
|
||||||
|
Loading…
Reference in New Issue
Block a user