| /* 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) { |