58 lines
2.1 KiB
C
58 lines
2.1 KiB
C
|
/*
|
||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* 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).
|
||
|
* You may select, at your option, one of the above-listed licenses.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Fuzz target interface.
|
||
|
* Fuzz targets have some common parameters passed as macros during compilation.
|
||
|
* Check the documentation for each individual fuzzer for more parameters.
|
||
|
*
|
||
|
* @param STATEFUL_FUZZING:
|
||
|
* 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 DEBUGLEVEL:
|
||
|
* This is a parameter for the zstd library. Defining `DEBUGLEVEL=1`
|
||
|
* enables assert() statements in the zstd library. Higher levels enable
|
||
|
* logging, so aren't recommended. Defining `DEBUGLEVEL=1` is
|
||
|
* 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.
|
||
|
* @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.
|
||
|
* @param FUZZ_THIRD_PARTY_SEQ_PROD
|
||
|
* This flag allows sequence producer plugin authors to replace the built-in
|
||
|
* default sequence producer with their own code. If you are not a plugin
|
||
|
* author, you should not define this flag. See the docs at
|
||
|
* fuzz_third_party_seq_prod.h for more information.
|
||
|
*/
|
||
|
|
||
|
#ifndef FUZZ_H
|
||
|
#define FUZZ_H
|
||
|
|
||
|
#include <stddef.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|