fuzz.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright (c) 2016-2021, Facebook, Inc.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under both the BSD-style license (found in the
  6. * LICENSE file in the root directory of this source tree) and the GPLv2 (found
  7. * in the COPYING file in the root directory of this source tree).
  8. * You may select, at your option, one of the above-listed licenses.
  9. */
  10. /**
  11. * Fuzz target interface.
  12. * Fuzz targets have some common parameters passed as macros during compilation.
  13. * Check the documentation for each individual fuzzer for more parameters.
  14. *
  15. * @param STATEFUL_FUZZING:
  16. * Define this to reuse state between fuzzer runs. This can be useful to
  17. * test code paths which are only executed when contexts are reused.
  18. * WARNING: Makes reproducing crashes much harder.
  19. * Default: Not defined.
  20. * @param DEBUGLEVEL:
  21. * This is a parameter for the zstd library. Defining `DEBUGLEVEL=1`
  22. * enables assert() statements in the zstd library. Higher levels enable
  23. * logging, so aren't recommended. Defining `DEBUGLEVEL=1` is
  24. * recommended.
  25. * @param MEM_FORCE_MEMORY_ACCESS:
  26. * This flag controls how the zstd library accesses unaligned memory.
  27. * It can be undefined, or 0 through 2. If it is undefined, it selects
  28. * the method to use based on the compiler. If testing with UBSAN set
  29. * MEM_FORCE_MEMORY_ACCESS=0 to use the standard compliant method.
  30. * @param FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
  31. * This is the canonical flag to enable deterministic builds for fuzzing.
  32. * Changes to zstd for fuzzing are gated behind this define.
  33. * It is recommended to define this when building zstd for fuzzing.
  34. */
  35. #ifndef FUZZ_H
  36. #define FUZZ_H
  37. #include <stddef.h>
  38. #include <stdint.h>
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42. int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size);
  43. #ifdef __cplusplus
  44. }
  45. #endif
  46. #endif