#include #include #include #include "zstd_seekable.h" /* Basic unit tests for zstd seekable format */ int main(int argc, const char** argv) { unsigned testNb = 1; printf("Beginning zstd seekable format tests...\n"); printf("Test %u - check that seekable decompress does not hang: ", testNb++); { /* Github issue #2335 */ const size_t compressed_size = 17; const uint8_t compressed_data[17] = { '^', '*', 'M', '\x18', '\t', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', ';', (uint8_t)('\xb1'), (uint8_t)('\xea'), (uint8_t)('\x92'), (uint8_t)('\x8f'), }; const size_t uncompressed_size = 32; uint8_t uncompressed_data[32]; ZSTD_seekable* stream = ZSTD_seekable_create(); size_t status = ZSTD_seekable_initBuff(stream, compressed_data, compressed_size); if (ZSTD_isError(status)) { ZSTD_seekable_free(stream); goto _test_error; } const size_t offset = 2; /* Should return an error, but not hang */ status = ZSTD_seekable_decompress(stream, uncompressed_data, uncompressed_size, offset); if (!ZSTD_isError(status)) { ZSTD_seekable_free(stream); goto _test_error; } ZSTD_seekable_free(stream); } printf("Success!\n"); /* TODO: Add more tests */ printf("Finished tests\n"); return 0; _test_error: printf("test failed! Exiting..\n"); return 1; }