diff options
author | 2015-12-10 18:27:32 -0800 | |
---|---|---|
committer | 2015-12-10 18:27:32 -0800 | |
commit | 5e0da5845e8409b3229a095e3bb2649ed8072bee (patch) | |
tree | c247e5d3fb855e65c9f6251eb84ee0e7c1d444c6 /test/core/compression/message_compress_test.c | |
parent | 48aa90a898ce404ca1da6f0d0025a46a0bf01313 (diff) |
More coverage
Diffstat (limited to 'test/core/compression/message_compress_test.c')
-rw-r--r-- | test/core/compression/message_compress_test.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/test/core/compression/message_compress_test.c b/test/core/compression/message_compress_test.c index 131b5e7f65..bd454099ce 100644 --- a/test/core/compression/message_compress_test.c +++ b/test/core/compression/message_compress_test.c @@ -167,7 +167,7 @@ static void test_tiny_data_compress(void) { gpr_slice_buffer_destroy(&output); } -static void test_bad_data_decompress(void) { +static void test_bad_decompression_data_crc(void) { gpr_slice_buffer input; gpr_slice_buffer corrupted; gpr_slice_buffer output; @@ -195,6 +195,40 @@ static void test_bad_data_decompress(void) { gpr_slice_buffer_destroy(&output); } +static void test_bad_decompression_data_trailing_garbage(void) { + gpr_slice_buffer input; + gpr_slice_buffer output; + + gpr_slice_buffer_init(&input); + gpr_slice_buffer_init(&output); + /* append 0x99 to the end of an otherwise valid stream */ + gpr_slice_buffer_add( + &input, gpr_slice_from_copied_buffer( + "\x78\xda\x63\x60\x60\x60\x00\x00\x00\x04\x00\x01\x99", 13)); + + /* try (and fail) to decompress the invalid compresed buffer */ + GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); + + gpr_slice_buffer_destroy(&input); + gpr_slice_buffer_destroy(&output); +} + +static void test_bad_decompression_data_stream(void) { + gpr_slice_buffer input; + gpr_slice_buffer output; + + gpr_slice_buffer_init(&input); + gpr_slice_buffer_init(&output); + gpr_slice_buffer_add(&input, + gpr_slice_from_copied_buffer("\x78\xda\xff\xff", 4)); + + /* try (and fail) to decompress the invalid compresed buffer */ + GPR_ASSERT(0 == grpc_msg_decompress(GRPC_COMPRESS_DEFLATE, &input, &output)); + + gpr_slice_buffer_destroy(&input); + gpr_slice_buffer_destroy(&output); +} + static void test_bad_compression_algorithm(void) { gpr_slice_buffer input; gpr_slice_buffer output; @@ -262,7 +296,9 @@ int main(int argc, char **argv) { } test_tiny_data_compress(); - test_bad_data_decompress(); + test_bad_decompression_data_crc(); + test_bad_decompression_data_stream(); + test_bad_decompression_data_trailing_garbage(); test_bad_compression_algorithm(); test_bad_decompression_algorithm(); grpc_shutdown(); |