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