/* See http://llvm.org/docs/LibFuzzer.html */ | /* See http://llvm.org/docs/LibFuzzer.html */ | ||||
extern int LLVMFuzzerRunDriver(int *argc, char ***argv, | extern int LLVMFuzzerRunDriver(int *argc, char ***argv, | ||||
int (*UserCb)(const uint8_t *Data, size_t Size)); | int (*UserCb)(const uint8_t *Data, size_t Size)); | ||||
extern int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); | |||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) | ||||
{ | { |
#include <espeak-ng/espeak_ng.h> | #include <espeak-ng/espeak_ng.h> | ||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); | |||||
extern int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); | |||||
int main(int argc, char **argv) { | int main(int argc, char **argv) { | ||||
int i; | int i; |
char *filepath = NULL; | char *filepath = NULL; | ||||
extern int LLVMFuzzerInitialize(const int* argc, char*** argv) | |||||
{ | |||||
int LLVMFuzzerInitialize(const int* argc, char*** argv) { | |||||
(void)argc; // unused | (void)argc; // unused | ||||
filepath = dirname(strdup((*argv)[0])); | filepath = dirname(strdup((*argv)[0])); | ||||
return 0; | return 0; | ||||
} | } | ||||
extern int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | |||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | |||||
if (!initialized) { | if (!initialized) { | ||||
const char *hasDataPath = getenv("ESPEAK_DATA_PATH"); | const char *hasDataPath = getenv("ESPEAK_DATA_PATH"); | ||||
if (!hasDataPath) { | if (!hasDataPath) { |