[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/6] configure.ac: detect if compiler supports -fsanitize=fuzzer
From: |
Daniel Axtens |
Subject: |
[PATCH 1/6] configure.ac: detect if compiler supports -fsanitize=fuzzer |
Date: |
Tue, 28 Mar 2023 01:04:54 +1100 |
If detected, COND_ENABLE_FUZZERS is set, which can be used in Makefile
templates.
This allows us to build libfuzzer fuzzers for parts of grub.
---
configure.ac | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/configure.ac b/configure.ac
index ca42ff8f7318..f7f305482e59 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1922,6 +1922,31 @@ fi
AC_SUBST([LIBZFS])
AC_SUBST([LIBNVPAIR])
+AC_ARG_ENABLE([fuzzers],
+ [AS_HELP_STRING([--enable-fuzzers],
+ [enable fuzzers (default=guessed)])])
+if test x"$enable_fuzzers" = xno ; then
+ fuzzers_excuse="explicitly disabled"
+fi
+
+if test x"$fuzzers_excuse" = x ; then
+ SAVED_CFLAGS="$CFLAGS"
+ SAVED_CC="$CC"
+ CC="$HOST_CC"
+ CFLAGS="$HOST_CFLAGS -fsanitize=fuzzer"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stddef.h>
+#include <stdint.h>
+int LLVMFuzzerTestOneInput(const uint8_t Data, size_t Size) {return 0;}]],
[[]])],
+ [],
+ [fuzzers_excuse="-fsanitize=fuzzer not supported by host compiler"])
+ CFLAGS="$SAVED_CFLAGS"
+ CC="$SAVED_CC"
+fi
+
+if test x"$enable_fuzzers" = xyes && test x"$fuzzers_excuse" != x ; then
+ AC_MSG_ERROR([fuzzers were explicitly requested but requirements are not
satisfied ($fuzzers_excuse)])
+fi
+
LIBS=""
AC_SUBST([FONT_SOURCE])
@@ -2054,6 +2079,8 @@ AM_CONDITIONAL([COND_STARFIELD], [test
"x$starfield_excuse" = x])
AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
AM_CONDITIONAL([COND_HAVE_PCI], [test "x$have_pci" = xy])
+AM_CONDITIONAL([COND_ENABLE_FUZZERS], [test "x$fuzzers_excuse" = x])
+
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
datarootdir="$(eval echo "$datarootdir")"
@@ -2189,5 +2216,10 @@ echo "With stack smashing protector: Yes"
else
echo "With stack smashing protector: No"
fi
+if [ x"$fuzzers_excuse" = x ]; then
+echo With fuzzers: Yes
+else
+echo With fuzzers: No "($fuzzers_excuse)"
+fi
echo "*******************************************************"
]
--
2.25.1
- [PATCH 0/6] Support fuzzing grub's image file parsers, Daniel Axtens, 2023/03/27
- [PATCH 1/6] configure.ac: detect if compiler supports -fsanitize=fuzzer,
Daniel Axtens <=
- [PATCH 4/6] tests: create a fuzzer for the jpeg image format, Daniel Axtens, 2023/03/27
- [PATCH 6/6] docs: document fuzzer support, Daniel Axtens, 2023/03/27
- [PATCH 3/6] tests: create a fuzzer for the png image format, Daniel Axtens, 2023/03/27
- [PATCH 2/6] bitmap.h: set smaller image size limit when fuzzing, Daniel Axtens, 2023/03/27
- [PATCH 5/6] tests: create a fuzzer for the tga image format, Daniel Axtens, 2023/03/27