fuzz_main.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <stdint.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size); /* required by C90 */
  5. #include "cjson_read_fuzzer.cc"
  6. /* fuzz target entry point, works without libFuzzer */
  7. int main(int argc, char **argv)
  8. {
  9. FILE *f;
  10. char *buf = NULL;
  11. long siz_buf;
  12. if(argc < 2)
  13. {
  14. fprintf(stderr, "no input file\n");
  15. goto err;
  16. }
  17. f = fopen(argv[1], "rb");
  18. if(f == NULL)
  19. {
  20. fprintf(stderr, "error opening input file %s\n", argv[1]);
  21. goto err;
  22. }
  23. fseek(f, 0, SEEK_END);
  24. siz_buf = ftell(f);
  25. rewind(f);
  26. if(siz_buf < 1) goto err;
  27. buf = (char*)malloc((size_t)siz_buf);
  28. if(buf == NULL)
  29. {
  30. fprintf(stderr, "malloc() failed\n");
  31. goto err;
  32. }
  33. if(fread(buf, (size_t)siz_buf, 1, f) != 1)
  34. {
  35. fprintf(stderr, "fread() failed\n");
  36. goto err;
  37. }
  38. (void)LLVMFuzzerTestOneInput((uint8_t*)buf, (size_t)siz_buf);
  39. err:
  40. free(buf);
  41. return 0;
  42. }