fuzzing_common.c 998 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include "orconfig.h"
  2. #include "torint.h"
  3. #include "util.h"
  4. #include "torlog.h"
  5. #include "backtrace.h"
  6. #include "fuzzing.h"
  7. extern const char tor_git_revision[];
  8. const char tor_git_revision[] = "";
  9. #define MAX_FUZZ_SIZE (128*1024)
  10. #ifdef LLVM_FUZZ
  11. int
  12. LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
  13. static int initialized = 0;
  14. if (!initialized) {
  15. if (fuzz_init() < 0)
  16. abort();
  17. }
  18. return fuzz_main(Data, Size);
  19. }
  20. #else /* Not LLVM_FUZZ, so AFL. */
  21. int
  22. main(int argc, char **argv)
  23. {
  24. size_t size;
  25. char *input = read_file_to_str_until_eof(0, MAX_FUZZ_SIZE, &size);
  26. tor_threads_init();
  27. init_logging(1);
  28. if (argc > 1 && !strcmp(argv[1], "--info")) {
  29. log_severity_list_t sev;
  30. set_log_severity_config(LOG_INFO, LOG_ERR, &sev);
  31. add_stream_log(&sev, "stdout", 1);
  32. configure_backtrace_handler(NULL);
  33. }
  34. tor_assert(input);
  35. if (fuzz_init() < 0)
  36. abort();
  37. fuzz_main((const uint8_t*)input, size);
  38. tor_free(input);
  39. return 0;
  40. }
  41. #endif