add AFL_EXIT_ON_SEED_ISSUES

This commit is contained in:
vanhauser-thc
2021-04-13 13:01:50 +02:00
parent 50bb931ea6
commit be880f2476
6 changed files with 23 additions and 2 deletions

View File

@ -24,6 +24,9 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
- ensure one fuzzer sync per cycle - ensure one fuzzer sync per cycle
- fix afl_custom_queue_new_entry original file name when syncing - fix afl_custom_queue_new_entry original file name when syncing
from fuzzers from fuzzers
- added AFL_EXIT_ON_SEED_ISSUES env that will exit if a seed in
-i dir crashes the target or results in a timeout. By default
afl++ ignores these and uses them for splicing instead.
- afl-cc: - afl-cc:
- Leak Sanitizer support (AFL_USE_LSAN) added by Joshua Rogers, thanks! - Leak Sanitizer support (AFL_USE_LSAN) added by Joshua Rogers, thanks!
- Removed InsTrim instrumentation as it is not as good as PCGUARD - Removed InsTrim instrumentation as it is not as good as PCGUARD

View File

@ -284,6 +284,9 @@ checks or alter some of the more exotic semantics of the tool:
normally indicated by the cycle counter in the UI turning green. May be normally indicated by the cycle counter in the UI turning green. May be
convenient for some types of automated jobs. convenient for some types of automated jobs.
- `AFL_EXIT_ON_SEED_ISSUES` will restore the vanilla afl-fuzz behaviour
which does not allow crashes or timeout seeds in the initial -i corpus.
- `AFL_MAP_SIZE` sets the size of the shared map that afl-fuzz, afl-showmap, - `AFL_MAP_SIZE` sets the size of the shared map that afl-fuzz, afl-showmap,
afl-tmin and afl-analyze create to gather instrumentation data from afl-tmin and afl-analyze create to gather instrumentation data from
the target. This must be equal or larger than the size the target was the target. This must be equal or larger than the size the target was

View File

@ -384,7 +384,8 @@ typedef struct afl_env_vars {
afl_dumb_forksrv, afl_import_first, afl_custom_mutator_only, afl_no_ui, afl_dumb_forksrv, afl_import_first, afl_custom_mutator_only, afl_no_ui,
afl_force_ui, afl_i_dont_care_about_missing_crashes, afl_bench_just_one, afl_force_ui, afl_i_dont_care_about_missing_crashes, afl_bench_just_one,
afl_bench_until_crash, afl_debug_child, afl_autoresume, afl_cal_fast, afl_bench_until_crash, afl_debug_child, afl_autoresume, afl_cal_fast,
afl_cycle_schedules, afl_expand_havoc, afl_statsd, afl_cmplog_only_new; afl_cycle_schedules, afl_expand_havoc, afl_statsd, afl_cmplog_only_new,
afl_exit_on_seed_issues;
u8 *afl_tmpdir, *afl_custom_mutator_library, *afl_python_module, *afl_path, 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_skip_crashes, *afl_preload,

View File

@ -49,6 +49,7 @@ static char *afl_environment_variables[] = {
"AFL_DUMB_FORKSRV", "AFL_DUMB_FORKSRV",
"AFL_ENTRYPOINT", "AFL_ENTRYPOINT",
"AFL_EXIT_WHEN_DONE", "AFL_EXIT_WHEN_DONE",
"AFL_EXIT_ON_SEED_ISSUES",
"AFL_FAST_CAL", "AFL_FAST_CAL",
"AFL_FORCE_UI", "AFL_FORCE_UI",
"AFL_FRIDA_DEBUG_MAPS", "AFL_FRIDA_DEBUG_MAPS",

View File

@ -881,7 +881,7 @@ void perform_dry_run(afl_state_t *afl) {
case FSRV_RUN_TMOUT: case FSRV_RUN_TMOUT:
if (afl->timeout_given) { if (afl->timeout_given && !afl->afl_env.afl_exit_on_seed_issues) {
/* if we have a timeout but a timeout value was given then always /* if we have a timeout but a timeout value was given then always
skip. The '+' meaning has been changed! */ skip. The '+' meaning has been changed! */
@ -1036,6 +1036,12 @@ void perform_dry_run(afl_state_t *afl) {
} }
if (afl->afl_env.afl_exit_on_seed_issues) {
FATAL("As AFL_EXIT_ON_SEED_ISSUES is set, afl-fuzz exits.");
}
/* Remove from fuzzing queue but keep for splicing */ /* Remove from fuzzing queue but keep for splicing */
struct queue_entry *p = afl->queue; struct queue_entry *p = afl->queue;

View File

@ -306,6 +306,13 @@ void read_afl_environment(afl_state_t *afl, char **envp) {
afl->cycle_schedules = afl->afl_env.afl_cycle_schedules = afl->cycle_schedules = afl->afl_env.afl_cycle_schedules =
get_afl_env(afl_environment_variables[i]) ? 1 : 0; get_afl_env(afl_environment_variables[i]) ? 1 : 0;
} else if (!strncmp(env, "AFL_EXIT_ON_SEED_ISSUES",
afl_environment_variable_len)) {
afl->afl_env.afl_exit_on_seed_issues =
get_afl_env(afl_environment_variables[i]) ? 1 : 0;
} else if (!strncmp(env, "AFL_EXPAND_HAVOC_NOW", } else if (!strncmp(env, "AFL_EXPAND_HAVOC_NOW",
afl_environment_variable_len)) { afl_environment_variable_len)) {