static void test_base64_decode(void)
{
static const struct test_base64_decode tests[] = {
+ { "", "", 0 },
{ "\taGVsbG8gd29ybGQ=",
"hello world", 0 },
{ "\nZm9v\n \tIGJh \t\ncml0cw==",
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),
const char *input;
const char *output;
} tests[] = {
+ { "", "" },
{ "hello world", "aGVsbG8gd29ybGQ=" },
{ "foo barits", "Zm9vIGJhcml0cw==" },
{ "just niin", "anVzdCBuaWlu" },
static void test_base64url_decode(void)
{
static const struct test_base64url_decode tests[] = {
+ { "", "", 0 },
{ "\taGVsbG8gd29ybGQ=",
"hello world", 0 },
{ "\nZm9v\n \tIGJh \t\ncml0cw==",
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,
static const struct test_base64_encode_lowlevel
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",
static const struct test_base64_decode_lowlevel
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=",
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);