diff --git a/configure.ac b/configure.ac index dbc3125..4a534f0 100644 --- a/configure.ac +++ b/configure.ac @@ -312,7 +312,7 @@ AC_SUBST(PSL_TESTFILE) # check for alloca / alloca.h AC_FUNC_ALLOCA -AC_CHECK_FUNCS([strndup clock_gettime]) +AC_CHECK_FUNCS([strndup clock_gettime fmemopen]) # Override the template file name of the generated .pc file, so that there # is no need to rename the template file when the API version changes. diff --git a/fuzz/fuzzer.h b/fuzz/fuzzer.h index 54be634..3d053d5 100644 --- a/fuzz/fuzzer.h +++ b/fuzz/fuzzer.h @@ -22,8 +22,15 @@ * This file is part of libpsl. */ +#include + #include /* size_t */ + +#ifdef HAVE_STDINT_H #include /* uint8_t */ +#elif defined (_MSC_VER) +typedef unsigned __int8 uint8_t; +#endif #ifdef __cplusplus extern "C" diff --git a/fuzz/libpsl_fuzzer.c b/fuzz/libpsl_fuzzer.c index f0fef11..ff72949 100644 --- a/fuzz/libpsl_fuzzer.c +++ b/fuzz/libpsl_fuzzer.c @@ -25,7 +25,13 @@ #include #include /* assert */ + +#ifdef HAVE_STDINT_H #include /* uint8_t */ +#elif defined (_MSC_VER) +typedef unsigned __int8 uint8_t; +#endif + #include /* malloc, free */ #include /* memcpy */ diff --git a/fuzz/libpsl_load_dafsa_fuzzer.c b/fuzz/libpsl_load_dafsa_fuzzer.c index 14044ba..859eeef 100644 --- a/fuzz/libpsl_load_dafsa_fuzzer.c +++ b/fuzz/libpsl_load_dafsa_fuzzer.c @@ -25,7 +25,13 @@ #include #include /* assert */ + +#ifdef HAVE_STDINT_H #include /* uint8_t */ +#elif defined (_MSC_VER) +typedef unsigned __int8 uint8_t; +#endif + #include /* malloc, free */ #include /* memcpy */ @@ -34,6 +40,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { +#ifdef HAVE_FMEMOPEN FILE *fp; psl_ctx_t *psl; char *in = (char *) malloc(size + 16); @@ -62,6 +69,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) psl_free(psl); free(in); +#endif return 0; } diff --git a/fuzz/libpsl_load_fuzzer.c b/fuzz/libpsl_load_fuzzer.c index 7bcafe0..ecac40c 100644 --- a/fuzz/libpsl_load_fuzzer.c +++ b/fuzz/libpsl_load_fuzzer.c @@ -25,7 +25,13 @@ #include #include /* assert */ + +#ifdef HAVE_STDINT_H #include /* uint8_t */ +#elif defined (_MSC_VER) +typedef unsigned __int8 uint8_t; +#endif + #include /* malloc, free */ #include /* memcpy */ @@ -34,6 +40,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { +#ifdef HAVE_FMEMOPEN FILE *fp; psl_ctx_t *psl; @@ -50,6 +57,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) fclose(fp); psl_load_file("/dev/null"); +#endif return 0; } diff --git a/fuzz/main.c b/fuzz/main.c index 3a07bca..de55ce4 100644 --- a/fuzz/main.c +++ b/fuzz/main.c @@ -25,9 +25,17 @@ #include "../config.h" #include + +#ifdef HAVE_UNISTD_H #include +#endif + #include + +#ifdef HAVE_STDINT_H #include +#endif + #include #include #include @@ -35,7 +43,7 @@ #include "fuzzer.h" -#ifdef TEST_RUN +#if defined (TEST_RUN) && defined (HAVE_FMEMOPEN) #include #ifdef HAVE_ALLOCA_H @@ -114,7 +122,7 @@ int main(int argc, char **argv) return 0; } -#else +#else /* TEST_RUN && HAVE_FMEMOPEN */ #ifndef __AFL_LOOP static int __AFL_LOOP(int n) @@ -132,6 +140,7 @@ static int __AFL_LOOP(int n) int main(int argc, char **argv) { +#ifdef HAVE_FMEMOPEN int ret; unsigned char buf[64 * 1024]; @@ -144,6 +153,9 @@ int main(int argc, char **argv) } return 0; +#else + exit (77); +#endif } -#endif /* TEST_RUN */ +#endif /* TEST_RUN && HAVE_FMEMOPEN*/