From: Stephan Bosch Date: Wed, 4 Sep 2019 20:52:00 +0000 (+0200) Subject: lib: test-base64 - Better check output of incrementally encoded random Base64. X-Git-Tag: 2.3.8~95 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=983f342c8f663f3db56759c7b31ecd6e237f94a3;p=thirdparty%2Fdovecot%2Fcore.git lib: test-base64 - Better check output of incrementally encoded random Base64. Check whether it is equal to the same data encoded as a single block and whether the length matches the base64_get_full_encoded_size() output. --- diff --git a/src/lib/test-base64.c b/src/lib/test-base64.c index 5b9b38224d..b73f5e713a 100644 --- a/src/lib/test-base64.c +++ b/src/lib/test-base64.c @@ -850,6 +850,9 @@ test_base64_random_lowlevel_one_block(const struct base64_scheme *b64, base64_encode_more(&enc, in_buf, in_buf_size, NULL, &buf); base64_encode_finish(&enc, &buf); + test_assert(base64_get_full_encoded_size(&enc, in_buf_size) == + buf1->used); + base64_decode_init(&dec, b64, dec_flags); space = buffer_append_space_unsafe(buf2, in_buf_size); buffer_create_from_data(&buf, space, in_buf_size); @@ -881,11 +884,12 @@ test_base64_random_lowlevel_stream(const struct base64_scheme *b64, void *out_data; buffer_t out; - buf_begin = in_buf; - buf_end = buf_begin + in_buf_size; + /* Encode */ buffer_set_used_size(buf1, 0); - buffer_set_used_size(buf2, 0); + + buf_begin = in_buf; + buf_end = buf_begin + in_buf_size; base64_encode_init(&enc, b64, enc_flags, max_line_len); out_space = 0; @@ -918,6 +922,21 @@ test_base64_random_lowlevel_stream(const struct base64_scheme *b64, } base64_encode_finish(&enc, buf1); + /* Verify encode */ + + test_assert(base64_get_full_encoded_size(&enc, in_buf_size) == + buf1->used); + + buffer_set_used_size(buf2, 0); + base64_encode_init(&enc, b64, enc_flags, max_line_len); + base64_encode_more(&enc, in_buf, in_buf_size, NULL, buf2); + base64_encode_finish(&enc, buf2); + test_assert_idx(buffer_cmp(buf1, buf2), test_idx); + + /* Decode */ + + buffer_set_used_size(buf2, 0); + buf_begin = buf1->data; buf_end = buf_begin + buf1->used; @@ -957,6 +976,7 @@ test_base64_random_lowlevel_stream(const struct base64_scheme *b64, } test_assert_idx(ret >= 0, test_idx); + /* Verify decode */ if (ret > 0) { ret = base64_decode_finish(&dec); test_assert_idx(ret == 0, test_idx); @@ -978,7 +998,7 @@ test_base64_random_lowlevel_case(const struct base64_scheme *b64, unsigned int i, j; buf1 = t_buffer_create(MAX_BASE64_ENCODED_SIZE(sizeof(in_buf))); - buf2 = t_buffer_create(sizeof(in_buf)); + buf2 = t_buffer_create(MAX_BASE64_ENCODED_SIZE(sizeof(in_buf))); /* one block */ for (i = 0; i < 1000; i++) {