1*6f9cba8fSJoseph Mingrone #include <stdint.h>
2*6f9cba8fSJoseph Mingrone #include <stdlib.h>
3*6f9cba8fSJoseph Mingrone #include <stdio.h>
4*6f9cba8fSJoseph Mingrone 
5*6f9cba8fSJoseph Mingrone int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
6*6f9cba8fSJoseph Mingrone void fuzz_openFile(const char * name);
7*6f9cba8fSJoseph Mingrone 
main(int argc,char ** argv)8*6f9cba8fSJoseph Mingrone int main(int argc, char** argv)
9*6f9cba8fSJoseph Mingrone {
10*6f9cba8fSJoseph Mingrone     FILE * fp;
11*6f9cba8fSJoseph Mingrone     uint8_t *Data;
12*6f9cba8fSJoseph Mingrone     size_t Size;
13*6f9cba8fSJoseph Mingrone 
14*6f9cba8fSJoseph Mingrone     if (argc == 3) {
15*6f9cba8fSJoseph Mingrone         fuzz_openFile(argv[2]);
16*6f9cba8fSJoseph Mingrone     } else if (argc != 2) {
17*6f9cba8fSJoseph Mingrone         return 1;
18*6f9cba8fSJoseph Mingrone     }
19*6f9cba8fSJoseph Mingrone     //opens the file, get its size, and reads it into a buffer
20*6f9cba8fSJoseph Mingrone     fp = fopen(argv[1], "rb");
21*6f9cba8fSJoseph Mingrone     if (fp == NULL) {
22*6f9cba8fSJoseph Mingrone         return 2;
23*6f9cba8fSJoseph Mingrone     }
24*6f9cba8fSJoseph Mingrone     if (fseek(fp, 0L, SEEK_END) != 0) {
25*6f9cba8fSJoseph Mingrone         fclose(fp);
26*6f9cba8fSJoseph Mingrone         return 2;
27*6f9cba8fSJoseph Mingrone     }
28*6f9cba8fSJoseph Mingrone     Size = ftell(fp);
29*6f9cba8fSJoseph Mingrone     if (Size == (size_t) -1) {
30*6f9cba8fSJoseph Mingrone         fclose(fp);
31*6f9cba8fSJoseph Mingrone         return 2;
32*6f9cba8fSJoseph Mingrone     }
33*6f9cba8fSJoseph Mingrone     if (fseek(fp, 0L, SEEK_SET) != 0) {
34*6f9cba8fSJoseph Mingrone         fclose(fp);
35*6f9cba8fSJoseph Mingrone         return 2;
36*6f9cba8fSJoseph Mingrone     }
37*6f9cba8fSJoseph Mingrone     Data = malloc(Size);
38*6f9cba8fSJoseph Mingrone     if (Data == NULL) {
39*6f9cba8fSJoseph Mingrone         fclose(fp);
40*6f9cba8fSJoseph Mingrone         return 2;
41*6f9cba8fSJoseph Mingrone     }
42*6f9cba8fSJoseph Mingrone     if (fread(Data, Size, 1, fp) != 1) {
43*6f9cba8fSJoseph Mingrone         fclose(fp);
44*6f9cba8fSJoseph Mingrone         free(Data);
45*6f9cba8fSJoseph Mingrone         return 2;
46*6f9cba8fSJoseph Mingrone     }
47*6f9cba8fSJoseph Mingrone 
48*6f9cba8fSJoseph Mingrone     //launch fuzzer
49*6f9cba8fSJoseph Mingrone     LLVMFuzzerTestOneInput(Data, Size);
50*6f9cba8fSJoseph Mingrone     free(Data);
51*6f9cba8fSJoseph Mingrone     fclose(fp);
52*6f9cba8fSJoseph Mingrone     return 0;
53*6f9cba8fSJoseph Mingrone }
54*6f9cba8fSJoseph Mingrone 
55