diff --git a/Changelog.md b/Changelog.md new file mode 120000 index 0000000000000000000000000000000000000000..c50d6ab3aa11a66a9610def3c1f94de8f0030dcc --- /dev/null +++ b/Changelog.md @@ -0,0 +1 @@ +docs/Changelog.md \ No newline at end of file diff --git a/docs/Changelog.md b/docs/Changelog.md index 898591f4cda5c5471c8cda8df6d982cc54e72fc8..b96884d7fb4833939fcef544e815e56c2494dc07 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -23,6 +23,7 @@ sending a mail to <afl-users+subscribe@googlegroups.com>. - changed execs_per_sec in fuzzer_stats from "current" execs per second (which is pointless) to total execs per second - bugfix for dictionary insert stage count (fix via Google repo PR) + - added warning if -M is used together with custom mutators with _ONLY option - llvm_mode InsTrim: no pointless instrumentation of 1 block functions - afl-clang-fast: - show in the help output for which llvm version it was compiled for diff --git a/gcc_plugin/Makefile b/gcc_plugin/Makefile index 4dcec72fd892116aa6d1920eb631e0afe4e6eb00..1ee18b829e0cc0cb154035b32d746261456df8c2 100644 --- a/gcc_plugin/Makefile +++ b/gcc_plugin/Makefile @@ -132,4 +132,4 @@ vpath % .. clean: rm -f *.o *.so *~ a.out core core.[1-9][0-9]* test-instr .test-instr0 .test-instr1 .test2 - rm -f $(PROGS) ../afl-g++-fast ../afl-g*-fast.8 + rm -f $(PROGS) afl-common.o ../afl-g++-fast ../afl-g*-fast.8 diff --git a/include/envs.h b/include/envs.h new file mode 100644 index 0000000000000000000000000000000000000000..f93449000108ac395ec53cb6aeb62cac2c556743 --- /dev/null +++ b/include/envs.h @@ -0,0 +1,97 @@ +const char *afl_environment_variables[] = { + + "AFL_ALIGNED_ALLOC", + "AFL_ALLOW_TMP", + "AFL_ANALYZE_HEX", + "AFL_AS", + "AFL_AS_FORCE_INSTRUMENT", + "AFL_BENCH_JUST_ONE", + "AFL_BENCH_UNTIL_CRASH", + "AFL_CAL_FAST", + "AFL_CC", + "AFL_CMIN_ALLOW_ANY", + "AFL_CMIN_CRASHES_ONLY", + "AFL_CODE_END", + "AFL_CODE_START", + "AFL_COMPCOV_BINNAME", + "AFL_COMPCOV_LEVEL", + "AFL_CUSTOM_MUTATOR_LIBRARY", + "AFL_CUSTOM_MUTATOR_ONLY", + "AFL_CXX", + "AFL_DEBUG", + "AFL_DEBUG_CHILD_OUTPUT", + "AFL_DEFER_FORKSRV", + "AFL_DISABLE_TRIM", + "AFL_DONT_OPTIMIZE", + "AFL_DUMB_FORKSRV", + "___AFL_EINS_ZWEI_POLIZEI___", + "AFL_ENTRYPOINT", + "AFL_EXIT_WHEN_DONE", + "AFL_FAST_CAL", + "AFL_FORCE_UI", + "AFL_GCC_WHITELIST", + "AFL_GCJ", + "AFL_HANG_TMOUT", + "AFL_HARDEN", + "AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES", + "AFL_IMPORT_FIRST", + "AFL_INST_LIBS", + "AFL_INST_RATIO", + "AFL_KEEP_TRACES", + "AFL_KEEP_ASSEMBLY", + "AFL_LD_HARD_FAIL", + "AFL_LD_LIMIT_MB", + "AFL_LD_NO_CALLOC_OVER", + "AFL_LD_PRELOAD", + "AFL_LD_VERBOSE", + "AFL_LLVM_CMPLOG", + "AFL_LLVM_INSTRIM", + "AFL_LLVM_INSTRIM_LOOPHEAD", + "AFL_LLVM_LAF_SPLIT_COMPARES", + "AFL_LLVM_LAF_SPLIT_COMPARES_BITW", + "AFL_LLVM_LAF_SPLIT_FLOATS", + "AFL_LLVM_LAF_SPLIT_SWITCHES", + "AFL_LLVM_LAF_TRANSFORM_COMPARES", + "AFL_LLVM_NOT_ZERO", + "AFL_LLVM_WHITELIST", + "AFL_NO_AFFINITY", + "AFL_NO_ARITH", + "AFL_NO_BUILTIN", + "AFL_NO_CPU_RED", + "AFL_NO_FORKSRV", + "AFL_NO_UI", + "AFL_PATH", + "AFL_PERFORMANCE_FILE", + "AFL_PERSISTENT", + "AFL_POST_LIBRARY", + "AFL_PRELOAD", + "AFL_PYTHON_MODULE", + "AFL_PYTHON_ONLY", + "AFL_QEMU_COMPCOV", + "AFL_QEMU_COMPCOV_DEBUG", + "AFL_QEMU_DEBUG_MAPS", + "AFL_QEMU_DISABLE_CACHE", + "AFL_QEMU_PERSISTENT_ADDR", + "AFL_QEMU_PERSISTENT_CNT", + "AFL_QEMU_PERSISTENT_GPR", + "AFL_QEMU_PERSISTENT_HOOK", + "AFL_QEMU_PERSISTENT_RET", + "AFL_QEMU_PERSISTENT_RETADDR_OFFSET", + "AFL_QUIET", + "AFL_RANDOM_ALLOC_CANARY", + "AFL_REAL_PATH", + "AFL_SHUFFLE_QUEUE", + "AFL_SKIP_BIN_CHECK", + "AFL_SKIP_CPUFREQ", + "AFL_SKIP_CRASHES", + "AFL_TMIN_EXACT", + "AFL_TMPDIR", + "AFL_TOKEN_FILE", + "AFL_TRACE_PC", + "AFL_USE_ASAN", + "AFL_USE_MSAN", + "AFL_USE_TRACE_PC", + "AFL_USE_UBSAN", + "AFL_WINE_PATH", + NULL}; + diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c index e995a7a052a90bb4410f8dadfdcad990459e7d59..5e5bc171e765e9d5c3b4f0595550b5c529f8e8b8 100644 --- a/src/afl-fuzz.c +++ b/src/afl-fuzz.c @@ -609,6 +609,9 @@ int main(int argc, char** argv, char** envp) { OKF("afl-tmin fork server patch from github.com/nccgroup/TriforceAFL"); OKF("MOpt Mutator from github.com/puppet-meteor/MOpt-AFL"); + if (sync_id && force_deterministic && (getenv("AFL_CUSTOM_MUTATOR_ONLY") || getenv("AFL_PYTHON_ONLY"))) + WARNF("Using -M master with the AFL_..._ONLY mutator options will result in no deterministic mutations being done!"); + check_environment_vars(envp); if (fixed_seed) OKF("Running with fixed seed: %u", (u32)init_seed);