1 /* Copyright 2016 Google Inc. All Rights Reserved.
2
3 Distributed under MIT license.
4 See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5 */
6
7 /* Simple runner for decode_fuzzer.cc */
8
9 #include <stdio.h>
10 #include <string.h>
11 #include <stdlib.h>
12 #include <stdint.h>
13
14 void LLVMFuzzerTestOneInput(const uint8_t* data, size_t size);
15
main(int argc,char ** argv)16 int main(int argc, char* *argv) {
17 if (argc != 2) {
18 fprintf(stderr, "Exactly one argument is expected.\n");
19 exit(EXIT_FAILURE);
20 }
21
22 FILE* f = fopen(argv[1], "r");
23 if (!f) {
24 fprintf(stderr, "Failed to open input file.");
25 exit(EXIT_FAILURE);
26 }
27
28 size_t max_len = 1 << 20;
29 unsigned char* tmp = (unsigned char*)malloc(max_len);
30 size_t len = fread(tmp, 1, max_len, f);
31 if (ferror(f)) {
32 fclose(f);
33 fprintf(stderr, "Failed read input file.");
34 exit(EXIT_FAILURE);
35 }
36 /* Make data after the end "inaccessible". */
37 unsigned char* data = (unsigned char*)malloc(len);
38 memcpy(data, tmp, len);
39 free(tmp);
40
41 LLVMFuzzerTestOneInput(data, len);
42 free(data);
43 exit(EXIT_SUCCESS);
44 }
45