]> wimlib.net Git - wimlib/blob - tools/libFuzzer/wim/fuzz.c
mount_image.c: add fallback definitions of RENAME_* constants
[wimlib] / tools / libFuzzer / wim / fuzz.c
1 #include "../fuzzer.h"
2
3 /* Fuzz WIM file reading. */
4 int LLVMFuzzerTestOneInput(const uint8_t *in, size_t insize)
5 {
6         uint16_t fault_nth;
7         char tmp_wim[128];
8         char tmp_dir[128];
9         int fd;
10         WIMStruct *wim;
11         int ret;
12
13         if (!setup_fault_nth(&in, &insize, &fault_nth))
14                 return 0;
15
16         sprintf(tmp_wim, "/tmp/wim-fuzz-%d.wim", getpid());
17         sprintf(tmp_dir, "/tmp/wim-fuzz-%d", getpid());
18
19         fd = open(tmp_wim, O_WRONLY|O_CREAT|O_TRUNC, 0600);
20         assert(fd >= 0);
21         ret = write(fd, in, insize);
22         assert(ret == insize);
23         close(fd);
24
25         ret = wimlib_open_wim(tmp_wim, 0, &wim);
26         if (ret == 0) {
27                 wimlib_extract_image(wim, 1, tmp_dir, 0);
28                 wimlib_add_image(wim, tmp_dir, "name", NULL, 0);
29                 wimlib_free(wim);
30         }
31         return 0;
32 }