diff --git a/Makefile.am b/Makefile.am index 967d015d..5e1a7ba1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -70,6 +70,7 @@ EXTRA_DIST = \ extras/ramdisk/ramdisk-create-osx.sh \ extras/console-qr/console-qr.sh \ extras/sanitizer/asan-build.sh \ + extras/sanitizer/ubsan-build.sh \ fwknop.spec \ iphone/main.m \ iphone/Fwknop.xcodeproj \ diff --git a/configure.ac b/configure.ac index 044d3c2c..9abf965f 100644 --- a/configure.ac +++ b/configure.ac @@ -179,7 +179,7 @@ dnl want_asan_support=no AC_ARG_ENABLE([asan-support], [AS_HELP_STRING([--enable-asan-support], - [Build fwknop binaries with address sanitizer support @<:@default is to disable@:>@])], + [Build fwknop binaries with AddressSanitizer support @<:@default is to disable@:>@])], [want_asan_support=$enableval], []) @@ -187,6 +187,19 @@ if test "x$want_asan_support" = "xyes"; then FKO_CHECK_COMPILER_ARG([-fsanitize=address -fno-omit-frame-pointer]) fi +dnl Decide whether or not to enable MemorySanitizer support +dnl +want_ubsan_support=no +AC_ARG_ENABLE([ubsan-support], + [AS_HELP_STRING([--enable-ubsan-support], + [Build fwknop binaries with UndefinedBehaviorSanitizer support @<:@default is to disable@:>@])], + [want_ubsan_support=$enableval], + []) + +if test "x$want_ubsan_support" = "xyes"; then + FKO_CHECK_COMPILER_ARG([-fsanitize=undefined]) +fi + dnl Decide whether or not force 32-bit mode dnl want_32bit_mode=no diff --git a/extras/sanitizer/asan-build.sh b/extras/sanitizer/asan-build.sh index ed42691b..41f42b6e 100755 --- a/extras/sanitizer/asan-build.sh +++ b/extras/sanitizer/asan-build.sh @@ -1,7 +1,7 @@ #!/bin/sh -x # -# In some cases when enabling Google's Address Sanitizer, errors like the +# In some cases when enabling Google's AddressSanitizer, errors like the # following can be generated. This script provides a workaround. # # fwknop-spa_comm.o: In function `send_spa_packet_http': diff --git a/extras/sanitizer/ubsan-build.sh b/extras/sanitizer/ubsan-build.sh new file mode 100755 index 00000000..4cfbe94c --- /dev/null +++ b/extras/sanitizer/ubsan-build.sh @@ -0,0 +1,15 @@ +#!/bin/sh -x +# +# Enabling Google's UndefinedBehaviorSanitizer +# + +if [ -x ./configure ]; then + export ac_cv_func_malloc_0_nonnull=yes + export ac_cv_func_realloc_0_nonnull=yes + ./autogen.sh + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/run --enable-ubsan-support $@ + make clean + make +else + echo "[*] Execute from the fwknop top level sources directory" +fi