]> wimlib.net Git - wimlib/blob - tools/libFuzzer/decompress/fuzz.c
Improve fuzz testing
[wimlib] / tools / libFuzzer / decompress / fuzz.c
1 #include "../fuzzer.h"
2
3 /* Fuzz decompression. */
4 int LLVMFuzzerTestOneInput(const uint8_t *in, size_t insize)
5 {
6         int ctype;
7         struct wimlib_decompressor *d;
8         const size_t outsize_avail = 3 * insize;
9         uint8_t *out;
10         int ret;
11
12         if (insize < 1)
13                 return 0;
14         ctype = 1 + ((uint8_t)(in[0] - 1) % 3); /* 1-3 */
15         in++;
16         insize--;
17
18         ret = wimlib_create_decompressor(ctype, insize, &d);
19         if (ret == 0) {
20                 out = malloc(outsize_avail);
21                 wimlib_decompress(in, insize, out, outsize_avail, d);
22                 wimlib_free_decompressor(d);
23                 free(out);
24         }
25         return 0;
26 }