mirror of
https://github.com/curl/curl.git
synced 2026-08-06 11:16:15 +03:00
curlx_base64_encode: use uint8_t* for input
Change `inputbuff` parameter from `const char *` to `const uint8_t *` to reflect the binary nature of the input bytes. Half the code was casting unsigned char to signed already in calling. Closes #19722
This commit is contained in:
parent
fd5a117a67
commit
bbb929112b
19 changed files with 33 additions and 30 deletions
|
|
@ -267,7 +267,7 @@ static CURLcode build_message(struct SASL *sasl, struct bufref *msg)
|
|||
char *base64;
|
||||
size_t base64len;
|
||||
|
||||
result = curlx_base64_encode((const char *) Curl_bufref_ptr(msg),
|
||||
result = curlx_base64_encode(Curl_bufref_ptr(msg),
|
||||
Curl_bufref_len(msg), &base64, &base64len);
|
||||
if(!result)
|
||||
Curl_bufref_set(msg, base64, base64len, curl_free);
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ static const unsigned char decodetable[] =
|
|||
* @unittest: 1302
|
||||
*/
|
||||
CURLcode curlx_base64_decode(const char *src,
|
||||
unsigned char **outptr, size_t *outlen)
|
||||
uint8_t **outptr, size_t *outlen)
|
||||
{
|
||||
size_t srclen = 0;
|
||||
size_t padding = 0;
|
||||
|
|
@ -170,8 +170,8 @@ bad:
|
|||
}
|
||||
|
||||
static CURLcode base64_encode(const char *table64,
|
||||
unsigned char padbyte,
|
||||
const char *inputbuff, size_t insize,
|
||||
uint8_t padbyte,
|
||||
const uint8_t *inputbuff, size_t insize,
|
||||
char **outptr, size_t *outlen)
|
||||
{
|
||||
char *output;
|
||||
|
|
@ -245,7 +245,7 @@ static CURLcode base64_encode(const char *table64,
|
|||
*
|
||||
* @unittest: 1302
|
||||
*/
|
||||
CURLcode curlx_base64_encode(const char *inputbuff, size_t insize,
|
||||
CURLcode curlx_base64_encode(const uint8_t *inputbuff, size_t insize,
|
||||
char **outptr, size_t *outlen)
|
||||
{
|
||||
return base64_encode(Curl_base64encdec, '=',
|
||||
|
|
@ -267,7 +267,7 @@ CURLcode curlx_base64_encode(const char *inputbuff, size_t insize,
|
|||
*
|
||||
* @unittest: 1302
|
||||
*/
|
||||
CURLcode curlx_base64url_encode(const char *inputbuff, size_t insize,
|
||||
CURLcode curlx_base64url_encode(const uint8_t *inputbuff, size_t insize,
|
||||
char **outptr, size_t *outlen)
|
||||
{
|
||||
return base64_encode(base64url, 0, inputbuff, insize, outptr, outlen);
|
||||
|
|
|
|||
|
|
@ -24,12 +24,12 @@
|
|||
*
|
||||
***************************************************************************/
|
||||
|
||||
CURLcode curlx_base64_encode(const char *inputbuff, size_t insize,
|
||||
CURLcode curlx_base64_encode(const uint8_t *inputbuff, size_t insize,
|
||||
char **outptr, size_t *outlen);
|
||||
CURLcode curlx_base64url_encode(const char *inputbuff, size_t insize,
|
||||
CURLcode curlx_base64url_encode(const uint8_t *inputbuff, size_t insize,
|
||||
char **outptr, size_t *outlen);
|
||||
CURLcode curlx_base64_decode(const char *src,
|
||||
unsigned char **outptr, size_t *outlen);
|
||||
uint8_t **outptr, size_t *outlen);
|
||||
|
||||
extern const char Curl_base64encdec[];
|
||||
|
||||
|
|
|
|||
|
|
@ -367,7 +367,8 @@ static CURLcode http_output_basic(struct Curl_easy *data, bool proxy)
|
|||
if(!out)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
result = curlx_base64_encode(out, strlen(out), &authorization, &size);
|
||||
result = curlx_base64_encode((uint8_t *)out, strlen(out),
|
||||
&authorization, &size);
|
||||
if(result)
|
||||
goto fail;
|
||||
|
||||
|
|
|
|||
|
|
@ -1847,8 +1847,7 @@ CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
|
|||
return CURLE_FAILED_INIT;
|
||||
}
|
||||
|
||||
result = curlx_base64url_encode((const char *)binsettings, binlen,
|
||||
&base64, &blen);
|
||||
result = curlx_base64url_encode(binsettings, binlen, &base64, &blen);
|
||||
if(result) {
|
||||
curlx_dyn_free(req);
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy)
|
|||
hostname, ntlm, &ntlmmsg);
|
||||
if(!result) {
|
||||
DEBUGASSERT(Curl_bufref_len(&ntlmmsg) != 0);
|
||||
result = curlx_base64_encode((const char *) Curl_bufref_ptr(&ntlmmsg),
|
||||
result = curlx_base64_encode(Curl_bufref_ptr(&ntlmmsg),
|
||||
Curl_bufref_len(&ntlmmsg), &base64, &len);
|
||||
if(!result) {
|
||||
free(*allocuserpwd);
|
||||
|
|
@ -224,7 +224,7 @@ CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy)
|
|||
result = Curl_auth_create_ntlm_type3_message(data, userp, passwdp,
|
||||
ntlm, &ntlmmsg);
|
||||
if(!result && Curl_bufref_len(&ntlmmsg)) {
|
||||
result = curlx_base64_encode((const char *) Curl_bufref_ptr(&ntlmmsg),
|
||||
result = curlx_base64_encode(Curl_bufref_ptr(&ntlmmsg),
|
||||
Curl_bufref_len(&ntlmmsg), &base64, &len);
|
||||
if(!result) {
|
||||
free(*allocuserpwd);
|
||||
|
|
|
|||
|
|
@ -626,7 +626,8 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
|
|||
curl_strequal(";binary", attr + (attr_len - 7)) ) {
|
||||
/* Binary attribute, encode to base64. */
|
||||
if(vals[i]->bv_len) {
|
||||
result = curlx_base64_encode(vals[i]->bv_val, vals[i]->bv_len,
|
||||
result = curlx_base64_encode((uint8_t *)vals[i]->bv_val,
|
||||
vals[i]->bv_len,
|
||||
&val_b64, &val_b64_sz);
|
||||
if(result) {
|
||||
ldap_value_free_len(vals);
|
||||
|
|
|
|||
|
|
@ -1213,7 +1213,8 @@ static CURLcode oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
|
|||
|
||||
/* Binary value, encode to base64. */
|
||||
if(bvals[i].bv_len)
|
||||
result = curlx_base64_encode(bvals[i].bv_val, bvals[i].bv_len,
|
||||
result = curlx_base64_encode((uint8_t *)bvals[i].bv_val,
|
||||
bvals[i].bv_len,
|
||||
&val_b64, &val_b64_sz);
|
||||
if(!result)
|
||||
result = client_write(data, STRCONST(": "), val_b64, val_b64_sz,
|
||||
|
|
|
|||
|
|
@ -710,7 +710,7 @@ static CURLcode auth_create_digest_http_message(
|
|||
if(result)
|
||||
return result;
|
||||
|
||||
result = curlx_base64_encode(cnoncebuf, sizeof(cnoncebuf),
|
||||
result = curlx_base64_encode((uint8_t *)cnoncebuf, sizeof(cnoncebuf),
|
||||
&cnonce, &cnonce_sz);
|
||||
if(result)
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -301,7 +301,7 @@ CURLcode Curl_auth_create_spnego_message(struct negotiatedata *nego,
|
|||
char **outptr, size_t *outlen)
|
||||
{
|
||||
/* Base64 encode the already generated response */
|
||||
CURLcode result = curlx_base64_encode((const char *)nego->output_token,
|
||||
CURLcode result = curlx_base64_encode(nego->output_token,
|
||||
nego->output_token_length, outptr,
|
||||
outlen);
|
||||
if(!result && (!*outptr || !*outlen)) {
|
||||
|
|
|
|||
|
|
@ -602,7 +602,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data,
|
|||
|
||||
/* The length of fingerprint is 32 bytes for SHA256.
|
||||
* See libssh2_hostkey_hash documentation. */
|
||||
if(curlx_base64_encode(fingerprint, 32, &fingerprint_b64,
|
||||
if(curlx_base64_encode((const uint8_t *)fingerprint, 32, &fingerprint_b64,
|
||||
&fingerprint_b64_len) != CURLE_OK) {
|
||||
myssh_state(data, sshc, SSH_SESSION_FREE);
|
||||
return CURLE_PEER_FAILED_VERIFICATION;
|
||||
|
|
|
|||
|
|
@ -4132,7 +4132,7 @@ static void ossl_trace_ech_retry_configs(struct Curl_easy *data, SSL* ssl,
|
|||
int rv = 1;
|
||||
# ifndef HAVE_BORINGSSL_LIKE
|
||||
char *inner = NULL;
|
||||
unsigned char *rcs = NULL;
|
||||
uint8_t *rcs = NULL;
|
||||
char *outer = NULL;
|
||||
# else
|
||||
const char *inner = NULL;
|
||||
|
|
@ -4156,7 +4156,7 @@ static void ossl_trace_ech_retry_configs(struct Curl_easy *data, SSL* ssl,
|
|||
char *b64str = NULL;
|
||||
size_t blen = 0;
|
||||
|
||||
result = curlx_base64_encode((const char *)rcs, rcl, &b64str, &blen);
|
||||
result = curlx_base64_encode(rcs, rcl, &b64str, &blen);
|
||||
if(!result && b64str) {
|
||||
infof(data, "ECH: retry_configs %s", b64str);
|
||||
free(b64str);
|
||||
|
|
|
|||
|
|
@ -790,7 +790,7 @@ CURLcode Curl_pin_peer_pubkey(struct Curl_easy *data,
|
|||
sha256sumdigest, CURL_SHA256_DIGEST_LENGTH);
|
||||
|
||||
if(!encode)
|
||||
encode = curlx_base64_encode((char *)sha256sumdigest,
|
||||
encode = curlx_base64_encode(sha256sumdigest,
|
||||
CURL_SHA256_DIGEST_LENGTH,
|
||||
&cert_hash, &cert_hash_len);
|
||||
Curl_safefree(sha256sumdigest);
|
||||
|
|
|
|||
|
|
@ -1816,7 +1816,7 @@ static CURLcode wssl_handshake(struct Curl_cfilter *cf,
|
|||
char *b64str = NULL;
|
||||
size_t blen = 0;
|
||||
|
||||
result = curlx_base64_encode((const char *)echConfigs, echConfigsLen,
|
||||
result = curlx_base64_encode(echConfigs, echConfigsLen,
|
||||
&b64str, &blen);
|
||||
if(!result && b64str)
|
||||
infof(data, "ECH: (not yet) retry_configs %s", b64str);
|
||||
|
|
|
|||
|
|
@ -1228,7 +1228,7 @@ CURLcode Curl_extract_certinfo(struct Curl_easy *data,
|
|||
curlx_dyn_reset(&out);
|
||||
|
||||
/* Generate PEM certificate. */
|
||||
result = curlx_base64_encode(cert.certificate.beg,
|
||||
result = curlx_base64_encode((const uint8_t *)cert.certificate.beg,
|
||||
cert.certificate.end - cert.certificate.beg,
|
||||
&certptr, &clen);
|
||||
if(result)
|
||||
|
|
|
|||
2
lib/ws.c
2
lib/ws.c
|
|
@ -1276,7 +1276,7 @@ CURLcode Curl_ws_request(struct Curl_easy *data, struct dynbuf *req)
|
|||
result = Curl_rand(data, rand, sizeof(rand));
|
||||
if(result)
|
||||
return result;
|
||||
result = curlx_base64_encode((char *)rand, sizeof(rand), &randstr, &randlen);
|
||||
result = curlx_base64_encode(rand, sizeof(rand), &randstr, &randlen);
|
||||
if(result)
|
||||
return result;
|
||||
DEBUGASSERT(randlen < sizeof(keyval));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue