fix UBSAN handling, update docs
MODIFY
docs/env_variables.md
docs/env_variables.md
@@ -25,9 +25,8 @@ tools make fairly broad use of environmental variables:
- see [notes_for_asan.md](notes_for_asan.md).
(You can also enable MSAN via AFL_USE_MSAN; ASAN and MSAN come with the
- same gotchas; the modes are mutually exclusive. UBSAN and other exotic
- sanitizers are not officially supported yet, but are easy to get to work
- by hand.)
+ same gotchas; the modes are mutually exclusive. UBSAN can be enabled
+ similarly by setting the environment variable AFL_USE_UBSAN=1)
- Setting AFL_CC, AFL_CXX, and AFL_AS lets you use alternate downstream
compilation tools, rather than the default 'clang', 'gcc', or 'as' binaries

MODIFY
docs/notes_for_asan.md
docs/notes_for_asan.md
@@ -136,7 +136,8 @@ istruction that will cause SIGILL (ud2 on x86) when an undefined behaviour
is detected. This is the option that you want to use when combining AFL++
and UBSan.
-AFL_USE_UBSAN=1 env var will add this compiler flag to afl-clang-fast for you.
+AFL_USE_UBSAN=1 env var will add this compiler flag to afl-clang-fast,
+afl-gcc-fast and afl-gcc for you.
Old versions of UBSAN don't offer a consistent way
to abort() on fault conditions or to terminate with a distinctive exit code

MODIFY
gcc_plugin/afl-gcc-fast.c
gcc_plugin/afl-gcc-fast.c
@@ -192,6 +192,8 @@ static void edit_params(u32 argc, char** argv) {
}
+ }
+
if (getenv("AFL_USE_UBSAN")) {
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
@@ -200,8 +202,6 @@ static void edit_params(u32 argc, char** argv) {
}
- }
-
if (!getenv("AFL_DONT_OPTIMIZE")) {
cc_params[cc_par_cnt++] = "-g";

MODIFY
llvm_mode/afl-clang-fast.c
llvm_mode/afl-clang-fast.c
@@ -300,6 +300,8 @@ static void edit_params(u32 argc, char** argv) {
}
+ }
+
if (getenv("AFL_USE_UBSAN")) {
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
@@ -308,8 +310,6 @@ static void edit_params(u32 argc, char** argv) {
}
- }
-
#ifdef USE_TRACE_PC
if (getenv("USE_TRACE_PC") || getenv("AFL_USE_TRACE_PC") ||

MODIFY
src/afl-gcc.c
src/afl-gcc.c
@@ -282,8 +282,6 @@ static void edit_params(u32 argc, char** argv) {
}
- if (!asan_set) {
-
if (getenv("AFL_USE_UBSAN")) {
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
@@ -292,8 +290,6 @@ static void edit_params(u32 argc, char** argv) {
}
- }
-
#ifdef USEMMAP
cc_params[cc_par_cnt++] = "-lrt";
#endif

fix UBSAN handling, update docs