#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
#include <stdbool.h>
|
#include <stddef.h>
|
#include <stdint.h>
|
|
/*
|
* buf: input fuzzing data
|
* len: size of the 'buf' data
|
*
|
* Return value: should return 0
|
*/
|
int LLVMFuzzerTestOneInput(const uint8_t* buf, size_t len);
|
|
/*
|
* argc: ptr to main's argc
|
* argv: ptr to main's argv
|
*
|
* Return value: ignored
|
*/
|
int LLVMFuzzerInitialize(int* argc, char*** argv);
|
|
/*
|
* Data: data to mutate
|
* Size: size of the data to mutate
|
* MaxSize: maximum size of the destination buffer
|
*
|
* Return value: size of the mutated buffer
|
*/
|
size_t LLVMFuzzerMutate(uint8_t* Data, size_t Size, size_t MaxSize);
|
|
/*
|
*
|
* An alternative for LLVMFuzzerTestOneInput()
|
*
|
* buf_ptr: will be set to input fuzzing data
|
* len_ptr: will be set to the size of the input fuzzing data
|
*/
|
void HF_ITER(const uint8_t** buf_ptr, size_t* len_ptr);
|
void HonggfuzzFetchData(const uint8_t** buf_ptr, size_t* len_ptr);
|
|
#if defined(__linux__)
|
|
#include <sched.h>
|
|
/*
|
* Enter Linux namespaces
|
*
|
* cloneFlags: see 'man unshare'
|
*/
|
bool linuxEnterNs(uintptr_t cloneFlags);
|
/*
|
* Bring network interface up
|
*
|
* ifacename: name of the interface, typically "lo"
|
*/
|
bool linuxIfaceUp(const char* ifacename);
|
/*
|
* Mount tmpfs over a mount point
|
*
|
* dst: mount point for tmfs
|
*/
|
bool linuxMountTmpfs(const char* dst);
|
|
#endif /* defined(__linux__) */
|
|
#ifdef __cplusplus
|
} /* extern "C" */
|
#endif
|