fuzz: Skip the tests if fmemopen() is not found
fmemopen() is a function that is only provided with *NIX systems, so we ought to check for its presence in order to build and run the tests in fuzz/ fully, otherwise, we just skip the tests. Also include headers according to how they are found, and add fallbacks for Visual Studio that do not have stdint.h yet.
This commit is contained in:
parent
44256b1a3a
commit
9620b13374
|
@ -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.
|
||||
|
|
|
@ -22,8 +22,15 @@
|
|||
* This file is part of libpsl.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stddef.h> /* size_t */
|
||||
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h> /* uint8_t */
|
||||
#elif defined (_MSC_VER)
|
||||
typedef unsigned __int8 uint8_t;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
|
|
|
@ -25,7 +25,13 @@
|
|||
#include <config.h>
|
||||
|
||||
#include <assert.h> /* assert */
|
||||
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h> /* uint8_t */
|
||||
#elif defined (_MSC_VER)
|
||||
typedef unsigned __int8 uint8_t;
|
||||
#endif
|
||||
|
||||
#include <stdlib.h> /* malloc, free */
|
||||
#include <string.h> /* memcpy */
|
||||
|
||||
|
|
|
@ -25,7 +25,13 @@
|
|||
#include <config.h>
|
||||
|
||||
#include <assert.h> /* assert */
|
||||
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h> /* uint8_t */
|
||||
#elif defined (_MSC_VER)
|
||||
typedef unsigned __int8 uint8_t;
|
||||
#endif
|
||||
|
||||
#include <stdlib.h> /* malloc, free */
|
||||
#include <string.h> /* 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;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,13 @@
|
|||
#include <config.h>
|
||||
|
||||
#include <assert.h> /* assert */
|
||||
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h> /* uint8_t */
|
||||
#elif defined (_MSC_VER)
|
||||
typedef unsigned __int8 uint8_t;
|
||||
#endif
|
||||
|
||||
#include <stdlib.h> /* malloc, free */
|
||||
#include <string.h> /* 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;
|
||||
}
|
||||
|
|
18
fuzz/main.c
18
fuzz/main.c
|
@ -25,9 +25,17 @@
|
|||
#include "../config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
@ -35,7 +43,7 @@
|
|||
|
||||
#include "fuzzer.h"
|
||||
|
||||
#ifdef TEST_RUN
|
||||
#if defined (TEST_RUN) && defined (HAVE_FMEMOPEN)
|
||||
|
||||
#include <dirent.h>
|
||||
#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*/
|
||||
|
|
Loading…
Reference in New Issue