3 /* Fuzz the compression and decompression round trip. */
4 int LLVMFuzzerTestOneInput(const uint8_t *in, size_t insize)
8 struct wimlib_compressor *c;
9 struct wimlib_decompressor *d;
10 size_t csize_avail = insize;
12 uint8_t *decompressed;
18 ctype = 1 + ((uint8_t)(in[0] - 1) % 3); /* 1-3 */
19 level = 1 + (in[1] % 100); /* 1-100 */
23 cbuf = malloc(csize_avail);
24 decompressed = malloc(insize);
26 ret = wimlib_create_compressor(ctype, insize, level, &c);
28 ret = wimlib_create_decompressor(ctype, insize, &d);
31 csize = wimlib_compress(in, insize, cbuf, csize_avail, c);
33 ret = wimlib_decompress(cbuf, csize,
34 decompressed, insize, d);
36 assert(memcmp(in, decompressed, insize) == 0);
38 wimlib_free_compressor(c);
39 wimlib_free_decompressor(d);