Mercurial > dovecot > core-2.3
changeset 26318:6f2cf5d96415
lib: test-base64 - Add explicit test cases for encoding/decoding the empty string.
author | Stephan Bosch <stephan.bosch@open-xchange.com> |
---|---|
date | Thu, 05 Sep 2019 11:45:02 +0200 |
parents | f07ec4961895 |
children | 77d886302d46 |
files | src/lib/test-base64.c |
diffstat | 1 files changed, 90 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/test-base64.c Thu Sep 05 02:31:58 2019 +0200 +++ b/src/lib/test-base64.c Thu Sep 05 11:45:02 2019 +0200 @@ -45,6 +45,7 @@ static void test_base64_decode(void) { static const struct test_base64_decode tests[] = { + { "", "", 0 }, { "\taGVsbG8gd29ybGQ=", "hello world", 0 }, { "\nZm9v\n \tIGJh \t\ncml0cw==", @@ -78,7 +79,9 @@ size_t max_decoded_size = MAX_BASE64_DECODED_SIZE(strlen(tests[i].input)); - buffer_create_from_data(&buf, t_malloc0(max_decoded_size), + buffer_create_from_data(&buf, + (max_decoded_size == 0 ? NULL : + t_malloc0(max_decoded_size)), max_decoded_size); str = &buf; ret = base64_decode(tests[i].input, strlen(tests[i].input), @@ -129,6 +132,7 @@ const char *input; const char *output; } tests[] = { + { "", "" }, { "hello world", "aGVsbG8gd29ybGQ=" }, { "foo barits", "Zm9vIGJhcml0cw==" }, { "just niin", "anVzdCBuaWlu" }, @@ -165,6 +169,7 @@ static void test_base64url_decode(void) { static const struct test_base64url_decode tests[] = { + { "", "", 0 }, { "\taGVsbG8gd29ybGQ=", "hello world", 0 }, { "\nZm9v\n \tIGJh \t\ncml0cw==", @@ -198,7 +203,9 @@ size_t max_decoded_size = MAX_BASE64_DECODED_SIZE(strlen(tests[i].input)); - buffer_create_from_data(&buf, t_malloc0(max_decoded_size), + buffer_create_from_data(&buf, + (max_decoded_size == 0 ? NULL : + t_malloc0(max_decoded_size)), max_decoded_size); str = &buf; ret = base64url_decode(0, tests[i].input, @@ -256,6 +263,30 @@ tests_base64_encode_lowlevel[] = { { .scheme = &base64_scheme, + .input = "", + .output = "", + }, + { + .scheme = &base64_scheme, + .max_line_len = 2, + .input = "", + .output = "", + }, + { + .scheme = &base64_scheme, + .flags = BASE64_ENCODE_FLAG_CRLF, + .max_line_len = 2, + .input = "", + .output = "", + }, + { + .scheme = &base64_scheme, + .flags = BASE64_ENCODE_FLAG_NO_PADDING, + .input = "", + .output = "", + }, + { + .scheme = &base64_scheme, .input = "hello world", .output = "aGVsbG8gd29ybGQ=", }, @@ -461,6 +492,60 @@ tests_base64_decode_lowlevel[] = { { .scheme = &base64_scheme, + .input = "", + .output = "", + .ret = 0, + .src_pos = UINT_MAX, + }, + { + .scheme = &base64_scheme, + .input = " ", + .output = "", + .ret = 0, + .src_pos = UINT_MAX, + }, + { + .scheme = &base64_scheme, + .input = "", + .output = "", + .ret = 0, + .src_pos = UINT_MAX, + .flags = BASE64_DECODE_FLAG_EXPECT_BOUNDARY, + }, + { + .scheme = &base64_scheme, + .input = "", + .output = "", + .ret = 0, + .src_pos = UINT_MAX, + .flags = BASE64_DECODE_FLAG_NO_WHITESPACE, + }, + { + .scheme = &base64_scheme, + .input = " ", + .output = "", + .ret = -1, + .src_pos = 0, + .flags = BASE64_DECODE_FLAG_NO_WHITESPACE, + }, + { + .scheme = &base64_scheme, + .input = "", + .output = "", + .ret = 0, + .src_pos = UINT_MAX, + .flags = BASE64_DECODE_FLAG_NO_PADDING, + }, + { + .scheme = &base64_scheme, + .input = "", + .output = "", + .ret = 0, + .src_pos = UINT_MAX, + .flags = BASE64_DECODE_FLAG_IGNORE_PADDING, + }, + { + .scheme = &base64_scheme, .input = "\taGVsbG8gd29ybGQ=", .output = "hello world", .ret = 0, @@ -797,7 +882,9 @@ size_t max_decoded_size = MAX_BASE64_DECODED_SIZE(strlen(test->input)); - buffer_create_from_data(&buf, t_malloc0(max_decoded_size), + buffer_create_from_data(&buf, + (max_decoded_size == 0 ? NULL : + t_malloc0(max_decoded_size)), max_decoded_size); str = &buf; base64_decode_init(&dec, test->scheme, test->flags);