Commit 0aa6817e authored by Sergei Golubchik's avatar Sergei Golubchik

name clash with gnutls on on base64_encode

parent 5ea5a7f7
...@@ -22,34 +22,34 @@ extern "C" { ...@@ -22,34 +22,34 @@ extern "C" {
#endif #endif
/* /*
Calculate how much memory needed for dst of base64_encode() Calculate how much memory needed for dst of my_base64_encode()
*/ */
int base64_needed_encoded_length(int length_of_data); int my_base64_needed_encoded_length(int length_of_data);
/* /*
Maximum length base64_encode_needed_length() can accept with no overflow. Maximum length my_base64_encode_needed_length() can accept with no overflow.
*/ */
int base64_encode_max_arg_length(void); int my_base64_encode_max_arg_length(void);
/* /*
Calculate how much memory needed for dst of base64_decode() Calculate how much memory needed for dst of my_base64_decode()
*/ */
int base64_needed_decoded_length(int length_of_encoded_data); int my_base64_needed_decoded_length(int length_of_encoded_data);
/* /*
Maximum length base64_decode_needed_length() can accept with no overflow. Maximum length my_base64_decode_needed_length() can accept with no overflow.
*/ */
int base64_decode_max_arg_length(); int my_base64_decode_max_arg_length();
/* /*
Encode data as a base64 string Encode data as a base64 string
*/ */
int base64_encode(const void *src, size_t src_len, char *dst); int my_base64_encode(const void *src, size_t src_len, char *dst);
/* /*
Decode a base64 string into data Decode a base64 string into data
*/ */
int base64_decode(const char *src, size_t src_len, int my_base64_decode(const char *src, size_t src_len,
void *dst, const char **end_ptr, int flags); void *dst, const char **end_ptr, int flags);
/* Allow multuple chunks 'AAA= AA== AA==', binlog uses this */ /* Allow multuple chunks 'AAA= AA== AA==', binlog uses this */
......
...@@ -26,22 +26,22 @@ static char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ...@@ -26,22 +26,22 @@ static char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789+/"; "0123456789+/";
/** /**
* Maximum length base64_needed_encoded_length() * Maximum length my_base64_needed_encoded_length()
* can handle without signed integer overflow. * can handle without signed integer overflow.
*/ */
int int
base64_encode_max_arg_length() my_base64_encode_max_arg_length()
{ {
/* /*
base64_needed_encoded_length(1589695686) -> 2147483646 (7FFFFFFE) my_base64_needed_encoded_length(1589695686) -> 2147483646 (7FFFFFFE)
base64_needed_encoded_length(1589695687) -> -2147483645 my_base64_needed_encoded_length(1589695687) -> -2147483645
*/ */
return 0x5EC0D4C6; /* 1589695686 */ return 0x5EC0D4C6; /* 1589695686 */
} }
int int
base64_needed_encoded_length(int length_of_data) my_base64_needed_encoded_length(int length_of_data)
{ {
int nb_base64_chars; int nb_base64_chars;
nb_base64_chars= (length_of_data + 2) / 3 * 4; nb_base64_chars= (length_of_data + 2) / 3 * 4;
...@@ -54,17 +54,17 @@ base64_needed_encoded_length(int length_of_data) ...@@ -54,17 +54,17 @@ base64_needed_encoded_length(int length_of_data)
/** /**
* Maximum length supported by base64_decode(). * Maximum length supported by my_base64_decode().
*/ */
int int
base64_decode_max_arg_length() my_base64_decode_max_arg_length()
{ {
return 0x7FFFFFFF; return 0x7FFFFFFF;
} }
int int
base64_needed_decoded_length(int length_of_encoded_data) my_base64_needed_decoded_length(int length_of_encoded_data)
{ {
return (int) ((longlong) length_of_encoded_data + 3) / 4 * 3; return (int) ((longlong) length_of_encoded_data + 3) / 4 * 3;
} }
...@@ -74,7 +74,7 @@ base64_needed_decoded_length(int length_of_encoded_data) ...@@ -74,7 +74,7 @@ base64_needed_decoded_length(int length_of_encoded_data)
Encode a data as base64. Encode a data as base64.
Note: We require that dst is pre-allocated to correct size. Note: We require that dst is pre-allocated to correct size.
See base64_needed_encoded_length(). See my_base64_needed_encoded_length().
Note: We add line separators every 76 characters. Note: We add line separators every 76 characters.
...@@ -83,7 +83,7 @@ base64_needed_decoded_length(int length_of_encoded_data) ...@@ -83,7 +83,7 @@ base64_needed_decoded_length(int length_of_encoded_data)
*/ */
int int
base64_encode(const void *src, size_t src_len, char *dst) my_base64_encode(const void *src, size_t src_len, char *dst)
{ {
const unsigned char *s= (const unsigned char*)src; const unsigned char *s= (const unsigned char*)src;
size_t i= 0; size_t i= 0;
...@@ -299,7 +299,7 @@ my_base64_decoder_getch(MY_BASE64_DECODER *decoder) ...@@ -299,7 +299,7 @@ my_base64_decoder_getch(MY_BASE64_DECODER *decoder)
* the last read character, even in the presence of error. * the last read character, even in the presence of error.
* *
* Note: 'dst' must have sufficient space to store the decoded data. * Note: 'dst' must have sufficient space to store the decoded data.
* Use base64_needed_decoded_length() to calculate the correct space size. * Use my_base64_needed_decoded_length() to calculate the correct space size.
* *
* Note: we allow spaces and line separators at any position. * Note: we allow spaces and line separators at any position.
* *
...@@ -313,7 +313,7 @@ my_base64_decoder_getch(MY_BASE64_DECODER *decoder) ...@@ -313,7 +313,7 @@ my_base64_decoder_getch(MY_BASE64_DECODER *decoder)
* @return Number of bytes written at 'dst', or -1 in case of failure * @return Number of bytes written at 'dst', or -1 in case of failure
*/ */
int int
base64_decode(const char *src_base, size_t len, my_base64_decode(const char *src_base, size_t len,
void *dst, const char **end_ptr, int flags) void *dst, const char **end_ptr, int flags)
{ {
char *d= (char*) dst; char *d= (char*) dst;
...@@ -397,18 +397,18 @@ main(void) ...@@ -397,18 +397,18 @@ main(void)
} }
/* Encode */ /* Encode */
needed_length= base64_needed_encoded_length(src_len); needed_length= my_base64_needed_encoded_length(src_len);
str= (char *) malloc(needed_length); str= (char *) malloc(needed_length);
require(str); require(str);
for (k= 0; k < needed_length; k++) for (k= 0; k < needed_length; k++)
str[k]= 0xff; /* Fill memory to check correct NUL termination */ str[k]= 0xff; /* Fill memory to check correct NUL termination */
require(base64_encode(src, src_len, str) == 0); require(my_base64_encode(src, src_len, str) == 0);
require(needed_length == strlen(str) + 1); require(needed_length == strlen(str) + 1);
/* Decode */ /* Decode */
dst= (char *) malloc(base64_needed_decoded_length(strlen(str))); dst= (char *) malloc(my_base64_needed_decoded_length(strlen(str)));
require(dst); require(dst);
dst_len= base64_decode(str, strlen(str), dst, NULL); dst_len= my_base64_decode(str, strlen(str), dst, NULL);
require(dst_len == src_len); require(dst_len == src_len);
if (memcmp(src, dst, src_len) != 0) if (memcmp(src, dst, src_len) != 0)
......
...@@ -422,8 +422,8 @@ int calculate_server_uid(char *dest) ...@@ -422,8 +422,8 @@ int calculate_server_uid(char *dest)
compute_sha1_hash((uint8*) shabuf, (char*) rawbuf, sizeof(rawbuf)); compute_sha1_hash((uint8*) shabuf, (char*) rawbuf, sizeof(rawbuf));
assert(base64_needed_encoded_length(sizeof(shabuf)) <= SERVER_UID_SIZE); assert(my_base64_needed_encoded_length(sizeof(shabuf)) <= SERVER_UID_SIZE);
base64_encode(shabuf, sizeof(shabuf), dest); my_base64_encode(shabuf, sizeof(shabuf), dest);
return 0; return 0;
} }
......
...@@ -427,14 +427,14 @@ void Item_func_to_base64::fix_length_and_dec() ...@@ -427,14 +427,14 @@ void Item_func_to_base64::fix_length_and_dec()
{ {
maybe_null= args[0]->maybe_null; maybe_null= args[0]->maybe_null;
collation.set(default_charset(), DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII); collation.set(default_charset(), DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII);
if (args[0]->max_length > (uint) base64_encode_max_arg_length()) if (args[0]->max_length > (uint) my_base64_encode_max_arg_length())
{ {
maybe_null= 1; maybe_null= 1;
fix_char_length_ulonglong((ulonglong) base64_encode_max_arg_length()); fix_char_length_ulonglong((ulonglong) my_base64_encode_max_arg_length());
} }
else else
{ {
int length= base64_needed_encoded_length((int) args[0]->max_length); int length= my_base64_needed_encoded_length((int) args[0]->max_length);
DBUG_ASSERT(length > 0); DBUG_ASSERT(length > 0);
fix_char_length_ulonglong((ulonglong) length - 1); fix_char_length_ulonglong((ulonglong) length - 1);
} }
...@@ -447,9 +447,9 @@ String *Item_func_to_base64::val_str_ascii(String *str) ...@@ -447,9 +447,9 @@ String *Item_func_to_base64::val_str_ascii(String *str)
bool too_long= false; bool too_long= false;
int length; int length;
if (!res || if (!res ||
res->length() > (uint) base64_encode_max_arg_length() || res->length() > (uint) my_base64_encode_max_arg_length() ||
(too_long= (too_long=
((uint) (length= base64_needed_encoded_length((int) res->length())) > ((uint) (length= my_base64_needed_encoded_length((int) res->length())) >
current_thd->variables.max_allowed_packet)) || current_thd->variables.max_allowed_packet)) ||
tmp_value.alloc((uint) length)) tmp_value.alloc((uint) length))
{ {
...@@ -465,7 +465,7 @@ String *Item_func_to_base64::val_str_ascii(String *str) ...@@ -465,7 +465,7 @@ String *Item_func_to_base64::val_str_ascii(String *str)
} }
return 0; return 0;
} }
base64_encode(res->ptr(), (int) res->length(), (char*) tmp_value.ptr()); my_base64_encode(res->ptr(), (int) res->length(), (char*) tmp_value.ptr());
DBUG_ASSERT(length > 0); DBUG_ASSERT(length > 0);
tmp_value.length((uint) length - 1); // Without trailing '\0' tmp_value.length((uint) length - 1); // Without trailing '\0'
null_value= 0; null_value= 0;
...@@ -475,13 +475,13 @@ String *Item_func_to_base64::val_str_ascii(String *str) ...@@ -475,13 +475,13 @@ String *Item_func_to_base64::val_str_ascii(String *str)
void Item_func_from_base64::fix_length_and_dec() void Item_func_from_base64::fix_length_and_dec()
{ {
if (args[0]->max_length > (uint) base64_decode_max_arg_length()) if (args[0]->max_length > (uint) my_base64_decode_max_arg_length())
{ {
fix_char_length_ulonglong((ulonglong) base64_decode_max_arg_length()); fix_char_length_ulonglong((ulonglong) my_base64_decode_max_arg_length());
} }
else else
{ {
int length= base64_needed_decoded_length((int) args[0]->max_length); int length= my_base64_needed_decoded_length((int) args[0]->max_length);
fix_char_length_ulonglong((ulonglong) length); fix_char_length_ulonglong((ulonglong) length);
} }
maybe_null= 1; // Can be NULL, e.g. in case of badly formed input string maybe_null= 1; // Can be NULL, e.g. in case of badly formed input string
...@@ -497,8 +497,8 @@ String *Item_func_from_base64::val_str(String *str) ...@@ -497,8 +497,8 @@ String *Item_func_from_base64::val_str(String *str)
if (!res) if (!res)
goto err; goto err;
if (res->length() > (uint) base64_decode_max_arg_length() || if (res->length() > (uint) my_base64_decode_max_arg_length() ||
((uint) (length= base64_needed_decoded_length((int) res->length())) > ((uint) (length= my_base64_needed_decoded_length((int) res->length())) >
current_thd->variables.max_allowed_packet)) current_thd->variables.max_allowed_packet))
{ {
THD *thd= current_thd; THD *thd= current_thd;
...@@ -513,7 +513,7 @@ String *Item_func_from_base64::val_str(String *str) ...@@ -513,7 +513,7 @@ String *Item_func_from_base64::val_str(String *str)
if (tmp_value.alloc((uint) length)) if (tmp_value.alloc((uint) length))
goto err; goto err;
if ((length= base64_decode(res->ptr(), (int) res->length(), if ((length= my_base64_decode(res->ptr(), (int) res->length(),
(char *) tmp_value.ptr(), &end_ptr, 0)) < 0 || (char *) tmp_value.ptr(), &end_ptr, 0)) < 0 ||
end_ptr < res->ptr() + res->length()) end_ptr < res->ptr() + res->length())
{ {
......
...@@ -2771,7 +2771,7 @@ void Log_event::print_base64(IO_CACHE* file, ...@@ -2771,7 +2771,7 @@ void Log_event::print_base64(IO_CACHE* file,
uint32 size= uint4korr(ptr + EVENT_LEN_OFFSET); uint32 size= uint4korr(ptr + EVENT_LEN_OFFSET);
DBUG_ENTER("Log_event::print_base64"); DBUG_ENTER("Log_event::print_base64");
size_t const tmp_str_sz= base64_needed_encoded_length((int) size); size_t const tmp_str_sz= my_base64_needed_encoded_length((int) size);
char *const tmp_str= (char *) my_malloc(tmp_str_sz, MYF(MY_WME)); char *const tmp_str= (char *) my_malloc(tmp_str_sz, MYF(MY_WME));
if (!tmp_str) { if (!tmp_str) {
fprintf(stderr, "\nError: Out of memory. " fprintf(stderr, "\nError: Out of memory. "
...@@ -2779,7 +2779,7 @@ void Log_event::print_base64(IO_CACHE* file, ...@@ -2779,7 +2779,7 @@ void Log_event::print_base64(IO_CACHE* file,
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
if (base64_encode(ptr, (size_t) size, tmp_str)) if (my_base64_encode(ptr, (size_t) size, tmp_str))
{ {
DBUG_ASSERT(0); DBUG_ASSERT(0);
} }
......
...@@ -60,7 +60,7 @@ void mysql_client_binlog_statement(THD* thd) ...@@ -60,7 +60,7 @@ void mysql_client_binlog_statement(THD* thd)
my_error(ER_SYNTAX_ERROR, MYF(0)); my_error(ER_SYNTAX_ERROR, MYF(0));
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
size_t decoded_len= base64_needed_decoded_length(coded_len); size_t decoded_len= my_base64_needed_decoded_length(coded_len);
/* /*
option_bits will be changed when applying the event. But we don't expect option_bits will be changed when applying the event. But we don't expect
...@@ -124,7 +124,7 @@ void mysql_client_binlog_statement(THD* thd) ...@@ -124,7 +124,7 @@ void mysql_client_binlog_statement(THD* thd)
strptr < thd->lex->comment.str + thd->lex->comment.length ; ) strptr < thd->lex->comment.str + thd->lex->comment.length ; )
{ {
char const *endptr= 0; char const *endptr= 0;
int bytes_decoded= base64_decode(strptr, coded_len, buf, &endptr, int bytes_decoded= my_base64_decode(strptr, coded_len, buf, &endptr,
MY_BASE64_DECODE_ALLOW_MULTIPLE_CHUNKS); MY_BASE64_DECODE_ALLOW_MULTIPLE_CHUNKS);
#ifndef HAVE_valgrind #ifndef HAVE_valgrind
......
...@@ -49,18 +49,18 @@ main(int argc __attribute__((unused)),char *argv[]) ...@@ -49,18 +49,18 @@ main(int argc __attribute__((unused)),char *argv[])
} }
/* Encode */ /* Encode */
needed_length= base64_needed_encoded_length(src_len); needed_length= my_base64_needed_encoded_length(src_len);
str= (char *) malloc(needed_length); str= (char *) malloc(needed_length);
for (k= 0; k < needed_length; k++) for (k= 0; k < needed_length; k++)
str[k]= 0xff; /* Fill memory to check correct NUL termination */ str[k]= 0xff; /* Fill memory to check correct NUL termination */
ok(base64_encode(src, src_len, str) == 0, ok(my_base64_encode(src, src_len, str) == 0,
"base64_encode: size %d", i); "my_base64_encode: size %d", i);
ok(needed_length == strlen(str) + 1, ok(needed_length == strlen(str) + 1,
"base64_needed_encoded_length: size %d", i); "my_base64_needed_encoded_length: size %d", i);
/* Decode */ /* Decode */
dst= (char *) malloc(base64_needed_decoded_length(strlen(str))); dst= (char *) malloc(my_base64_needed_decoded_length(strlen(str)));
dst_len= base64_decode(str, strlen(str), dst, NULL, 0); dst_len= my_base64_decode(str, strlen(str), dst, NULL, 0);
ok(dst_len == src_len, "Comparing lengths"); ok(dst_len == src_len, "Comparing lengths");
cmp= memcmp(src, dst, src_len); cmp= memcmp(src, dst, src_len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment