xref: /aosp_15_r20/external/lz4/ossfuzz/fuzz.h (revision 27162e4e17433d5aa7cb38e7b6a433a09405fc7f)
1*27162e4eSAndroid Build Coastguard Worker /**
2*27162e4eSAndroid Build Coastguard Worker  * Fuzz target interface.
3*27162e4eSAndroid Build Coastguard Worker  * Fuzz targets have some common parameters passed as macros during compilation.
4*27162e4eSAndroid Build Coastguard Worker  * Check the documentation for each individual fuzzer for more parameters.
5*27162e4eSAndroid Build Coastguard Worker  *
6*27162e4eSAndroid Build Coastguard Worker  * @param FUZZ_RNG_SEED_SIZE:
7*27162e4eSAndroid Build Coastguard Worker  *        The number of bytes of the source to look at when constructing a seed
8*27162e4eSAndroid Build Coastguard Worker  *        for the deterministic RNG. These bytes are discarded before passing
9*27162e4eSAndroid Build Coastguard Worker  *        the data to lz4 functions. Every fuzzer initializes the RNG exactly
10*27162e4eSAndroid Build Coastguard Worker  *        once before doing anything else, even if it is unused.
11*27162e4eSAndroid Build Coastguard Worker  *        Default: 4.
12*27162e4eSAndroid Build Coastguard Worker  * @param LZ4_DEBUG:
13*27162e4eSAndroid Build Coastguard Worker  *        This is a parameter for the lz4 library. Defining `LZ4_DEBUG=1`
14*27162e4eSAndroid Build Coastguard Worker  *        enables assert() statements in the lz4 library. Higher levels enable
15*27162e4eSAndroid Build Coastguard Worker  *        logging, so aren't recommended. Defining `LZ4_DEBUG=1` is
16*27162e4eSAndroid Build Coastguard Worker  *        recommended.
17*27162e4eSAndroid Build Coastguard Worker  * @param LZ4_FORCE_MEMORY_ACCESS:
18*27162e4eSAndroid Build Coastguard Worker  *        This flag controls how the zstd library accesses unaligned memory.
19*27162e4eSAndroid Build Coastguard Worker  *        It can be undefined, or 0 through 2. If it is undefined, it selects
20*27162e4eSAndroid Build Coastguard Worker  *        the method to use based on the compiler. If testing with UBSAN set
21*27162e4eSAndroid Build Coastguard Worker  *        MEM_FORCE_MEMORY_ACCESS=0 to use the standard compliant method.
22*27162e4eSAndroid Build Coastguard Worker  * @param FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
23*27162e4eSAndroid Build Coastguard Worker  *        This is the canonical flag to enable deterministic builds for fuzzing.
24*27162e4eSAndroid Build Coastguard Worker  *        Changes to zstd for fuzzing are gated behind this define.
25*27162e4eSAndroid Build Coastguard Worker  *        It is recommended to define this when building zstd for fuzzing.
26*27162e4eSAndroid Build Coastguard Worker  */
27*27162e4eSAndroid Build Coastguard Worker 
28*27162e4eSAndroid Build Coastguard Worker #ifndef FUZZ_H
29*27162e4eSAndroid Build Coastguard Worker #define FUZZ_H
30*27162e4eSAndroid Build Coastguard Worker 
31*27162e4eSAndroid Build Coastguard Worker #ifndef FUZZ_RNG_SEED_SIZE
32*27162e4eSAndroid Build Coastguard Worker #  define FUZZ_RNG_SEED_SIZE 4
33*27162e4eSAndroid Build Coastguard Worker #endif
34*27162e4eSAndroid Build Coastguard Worker 
35*27162e4eSAndroid Build Coastguard Worker #include <stddef.h>
36*27162e4eSAndroid Build Coastguard Worker #include <stdint.h>
37*27162e4eSAndroid Build Coastguard Worker 
38*27162e4eSAndroid Build Coastguard Worker #ifdef __cplusplus
39*27162e4eSAndroid Build Coastguard Worker extern "C" {
40*27162e4eSAndroid Build Coastguard Worker #endif
41*27162e4eSAndroid Build Coastguard Worker 
42*27162e4eSAndroid Build Coastguard Worker int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size);
43*27162e4eSAndroid Build Coastguard Worker 
44*27162e4eSAndroid Build Coastguard Worker #ifdef __cplusplus
45*27162e4eSAndroid Build Coastguard Worker }
46*27162e4eSAndroid Build Coastguard Worker #endif
47*27162e4eSAndroid Build Coastguard Worker 
48*27162e4eSAndroid Build Coastguard Worker #endif
49