2017-08-31 19:11:57 +00:00
|
|
|
/*
|
2017-06-29 23:53:52 +00:00
|
|
|
* Copyright (c) 2016-present, Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
2017-08-31 19:11:57 +00:00
|
|
|
* This source code is licensed under both the BSD-style license (found in the
|
|
|
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
|
|
* in the COPYING file in the root directory of this source tree).
|
2017-06-29 23:53:52 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fuzz target interface.
|
|
|
|
* Fuzz targets have some common parameters passed as macros during compilation.
|
|
|
|
* Check the documentation for each individual fuzzer for more parameters.
|
|
|
|
*
|
2017-09-13 03:20:27 +00:00
|
|
|
* @param STATEFUL_FUZZING:
|
2017-06-29 23:53:52 +00:00
|
|
|
* Define this to reuse state between fuzzer runs. This can be useful to
|
|
|
|
* test code paths which are only executed when contexts are reused.
|
|
|
|
* WARNING: Makes reproducing crashes much harder.
|
|
|
|
* Default: Not defined.
|
|
|
|
* @param FUZZ_RNG_SEED_SIZE:
|
|
|
|
* The number of bytes of the source to look at when constructing a seed
|
2017-09-13 03:20:27 +00:00
|
|
|
* for the deterministic RNG. These bytes are discarded before passing
|
|
|
|
* the data to zstd functions. Every fuzzer initializes the RNG exactly
|
|
|
|
* once before doing anything else, even if it is unused.
|
|
|
|
* Default: 4.
|
2018-06-13 18:59:26 +00:00
|
|
|
* @param DEBUGLEVEL:
|
|
|
|
* This is a parameter for the zstd library. Defining `DEBUGLEVEL=1`
|
2017-06-29 23:53:52 +00:00
|
|
|
* enables assert() statements in the zstd library. Higher levels enable
|
2018-06-13 18:59:26 +00:00
|
|
|
* logging, so aren't recommended. Defining `DEBUGLEVEL=1` is
|
2017-06-29 23:53:52 +00:00
|
|
|
* recommended.
|
|
|
|
* @param MEM_FORCE_MEMORY_ACCESS:
|
|
|
|
* This flag controls how the zstd library accesses unaligned memory.
|
|
|
|
* It can be undefined, or 0 through 2. If it is undefined, it selects
|
|
|
|
* the method to use based on the compiler. If testing with UBSAN set
|
|
|
|
* MEM_FORCE_MEMORY_ACCESS=0 to use the standard compliant method.
|
|
|
|
* @param FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
|
|
* This is the canonical flag to enable deterministic builds for fuzzing.
|
|
|
|
* Changes to zstd for fuzzing are gated behind this define.
|
|
|
|
* It is recommended to define this when building zstd for fuzzing.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef FUZZ_H
|
|
|
|
#define FUZZ_H
|
|
|
|
|
|
|
|
#ifndef FUZZ_RNG_SEED_SIZE
|
2017-09-13 03:20:27 +00:00
|
|
|
# define FUZZ_RNG_SEED_SIZE 4
|
2017-06-29 23:53:52 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
2017-09-13 03:20:27 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2017-06-29 23:53:52 +00:00
|
|
|
int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size);
|
|
|
|
|
2017-09-13 03:20:27 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2017-06-29 23:53:52 +00:00
|
|
|
#endif
|