#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