AFL_SKIP_CRASHES is obsolete since 3.0
MODIFY
docs/env_variables.md
docs/env_variables.md
@@ -315,11 +315,6 @@ checks or alter some of the more exotic semantics of the tool:
- Setting `AFL_NO_AUTODICT` will not load an LTO generated auto dictionary
that is compiled into the target.
- - `AFL_SKIP_CRASHES` causes AFL++ to tolerate crashing files in the input
- queue. This can help with rare situations where a program crashes only
- intermittently, but it's not really recommended under normal operating
- conditions.
-
- Setting `AFL_HANG_TMOUT` allows you to specify a different timeout for
deciding if a particular test case is a "hang". The default is 1 second
or the value of the `-t` parameter, whichever is larger. Dialing the value

MODIFY
include/afl-fuzz.h
include/afl-fuzz.h
@@ -388,7 +388,7 @@ typedef struct afl_env_vars {
afl_exit_on_seed_issues;
u8 *afl_tmpdir, *afl_custom_mutator_library, *afl_python_module, *afl_path,
- *afl_hang_tmout, *afl_forksrv_init_tmout, *afl_skip_crashes, *afl_preload,
+ *afl_hang_tmout, *afl_forksrv_init_tmout, *afl_preload,
*afl_max_det_extras, *afl_statsd_host, *afl_statsd_port,
*afl_crash_exitcode, *afl_statsd_tags_flavor, *afl_testcache_size,
*afl_testcache_entries, *afl_kill_signal, *afl_target_env,

MODIFY
src/afl-fuzz-init.c
src/afl-fuzz-init.c
@@ -823,7 +823,6 @@ void perform_dry_run(afl_state_t *afl) {
struct queue_entry *q;
u32 cal_failures = 0, idx;
- u8 * skip_crashes = afl->afl_env.afl_skip_crashes;
u8 * use_mem;
for (idx = 0; idx < afl->queued_paths; idx++) {
@@ -923,27 +922,6 @@ void perform_dry_run(afl_state_t *afl) {
if (afl->crash_mode) { break; }
- if (skip_crashes) {
-
- if (afl->fsrv.uses_crash_exitcode) {
-
- WARNF(
- "Test case results in a crash or AFL_CRASH_EXITCODE %d "
- "(skipping)",
- (int)(s8)afl->fsrv.crash_exitcode);
-
- } else {
-
- WARNF("Test case results in a crash (skipping)");
-
- }
-
- q->cal_failed = CAL_CHANCES;
- ++cal_failures;
- break;
-
- }
-
if (afl->fsrv.mem_limit) {
u8 val_buf[STRINGIFY_VAL_SIZE_MAX];
@@ -1117,14 +1095,12 @@ void perform_dry_run(afl_state_t *afl) {
if (cal_failures == afl->queued_paths) {
- FATAL("All test cases time out%s, giving up!",
- skip_crashes ? " or crash" : "");
+ FATAL("All test cases time out or crash, giving up!");
}
- WARNF("Skipped %u test cases (%0.02f%%) due to timeouts%s.", cal_failures,
- ((double)cal_failures) * 100 / afl->queued_paths,
- skip_crashes ? " or crashes" : "");
+ WARNF("Skipped %u test cases (%0.02f%%) due to timeouts or crashes.",
+ cal_failures, ((double)cal_failures) * 100 / afl->queued_paths);
if (cal_failures * 5 > afl->queued_paths) {

MODIFY
src/afl-fuzz-state.c
src/afl-fuzz-state.c
@@ -206,8 +206,7 @@ void read_afl_environment(afl_state_t *afl, char **envp) {
afl_environment_variable_len)) {
- afl->afl_env.afl_skip_crashes =
- (u8 *)get_afl_env(afl_environment_variables[i]);
+ // we should mark this obsolete in a few versions
} else if (!strncmp(env, "AFL_HANG_TMOUT",

MODIFY
src/afl-fuzz.c
src/afl-fuzz.c
@@ -240,7 +240,7 @@ static void usage(u8 *argv0, int more_help) {
"AFL_SHUFFLE_QUEUE: reorder the input queue randomly on startup\n"
"AFL_SKIP_BIN_CHECK: skip afl compatibility checks, also disables auto map size\n"
"AFL_SKIP_CPUFREQ: do not warn about variable cpu clocking\n"
- "AFL_SKIP_CRASHES: during initial dry run do not terminate for crashing inputs\n"
+ //"AFL_SKIP_CRASHES: during initial dry run do not terminate for crashing inputs\n"
"AFL_STATSD: enables StatsD metrics collection\n"
"AFL_STATSD_HOST: change default statsd host (default 127.0.0.1)\n"
"AFL_STATSD_PORT: change default statsd port (default: 8125)\n"

AFL_SKIP_CRASHES is obsolete since 3.0