Commit d8dac8bf authored by unknown's avatar unknown

Merge mysql.com:/users/lthalmann/bkroot/mysql-5.0

into  mysql.com:/users/lthalmann/bk/mysql-5.0-base64

parents 38901828 65784838
...@@ -27,9 +27,13 @@ static char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ...@@ -27,9 +27,13 @@ static char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
int int
base64_needed_encoded_length(int length_of_data) base64_needed_encoded_length(int length_of_data)
{ {
return ceil(length_of_data * 4 / 3) /* base64 chars */ + int nb_base64_chars;
ceil(length_of_data / (76 * 3 / 4)) /* Newlines */ + nb_base64_chars= (length_of_data + 2) / 3 * 4;
3 /* Padding */;
return
nb_base64_chars + /* base64 char incl padding */
(nb_base64_chars - 1)/ 76 + /* newlines */
1; /* NUL termination of string */
} }
...@@ -89,6 +93,7 @@ base64_encode(const void *src, size_t src_len, char *dst) ...@@ -89,6 +93,7 @@ base64_encode(const void *src, size_t src_len, char *dst)
else else
*dst++= base64_table[(c >> 0) & 0x3f]; *dst++= base64_table[(c >> 0) & 0x3f];
} }
*dst= '\0';
return 0; return 0;
} }
...@@ -209,6 +214,7 @@ main(void) ...@@ -209,6 +214,7 @@ main(void)
size_t j; size_t j;
size_t k, l; size_t k, l;
size_t dst_len; size_t dst_len;
size_t needed_length;
for (i= 0; i < 500; i++) for (i= 0; i < 500; i++)
{ {
...@@ -227,8 +233,12 @@ main(void) ...@@ -227,8 +233,12 @@ main(void)
} }
/* Encode */ /* Encode */
str= (char *) malloc(base64_needed_encoded_length(src_len)); needed_length= base64_needed_encoded_length(src_len);
str= (char *) malloc(needed_length);
for (k= 0; k < needed_length; k++)
str[k]= 0xff; /* Fill memory to check correct NUL termination */
require(base64_encode(src, src_len, str) == 0); require(base64_encode(src, src_len, str) == 0);
require(needed_length == strlen(str) + 1);
/* Decode */ /* Decode */
dst= (char *) malloc(base64_needed_decoded_length(strlen(str))); dst= (char *) malloc(base64_needed_decoded_length(strlen(str)));
......
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