mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-15 19:38:09 +00:00
add AFL_FINAL_SYNC
This commit is contained in:
@ -4,7 +4,9 @@
|
||||
release of the tool. See README.md for the general instruction manual.
|
||||
|
||||
### Version ++4.09a (dev)
|
||||
- something cool :-)
|
||||
- afl-fuzz:
|
||||
- added `AFL_FINAL_SYNC` which forces a final fuzzer sync (also for `-F`)
|
||||
before terminating.
|
||||
|
||||
|
||||
### Version ++4.08c (release)
|
||||
@ -22,7 +24,6 @@
|
||||
- -l X option to enable base64 transformation solving
|
||||
- allow to disable CMPLOG with '-c -' (e.g. afl.rs enforces '-c 0' on
|
||||
every instance which is counterproductive).
|
||||
|
||||
- afl-cmin/afl-cmin.bash:
|
||||
- fixed a bug inherited from vanilla AFL where a coverage of
|
||||
map[123] = 11 would be the same as map[1123] = 1
|
||||
@ -40,7 +41,6 @@
|
||||
- qemu_mode:
|
||||
- added qemu_mode/utils/qemu_get_symbol_addr.sh
|
||||
|
||||
|
||||
### Version ++4.07c (release)
|
||||
- afl-fuzz:
|
||||
- reverse reading the seeds only on restarts (increases performance)
|
||||
@ -69,7 +69,6 @@
|
||||
- TritonDSE in custom_mutators/aflpp_tritondse
|
||||
- SymQEMU in custom_mutators/symqemu
|
||||
|
||||
|
||||
### Version ++4.06c (release)
|
||||
- afl-fuzz:
|
||||
- ensure temporary file descriptor is closed when not used
|
||||
|
@ -412,10 +412,15 @@ checks or alter some of the more exotic semantics of the tool:
|
||||
set `AFL_IGNORE_PROBLEMS`. If you additionally want to also ignore coverage
|
||||
from late loaded libraries, you can set `AFL_IGNORE_PROBLEMS_COVERAGE`.
|
||||
|
||||
- When running in the `-M` or `-S` mode, setting `AFL_IMPORT_FIRST` causes the
|
||||
fuzzer to import test cases from other instances before doing anything else.
|
||||
This makes the "own finds" counter in the UI more accurate. Beyond counter
|
||||
aesthetics, not much else should change.
|
||||
- When running with multiple afl-fuzz or with `-F`, setting `AFL_IMPORT_FIRST`
|
||||
causes the fuzzer to import test cases from other instances before doing
|
||||
anything else. This makes the "own finds" counter in the UI more accurate.
|
||||
|
||||
- When running with multiple afl-fuzz or with `-F`, setting `AFL_FINAL_SYNC`
|
||||
will cause the fuzzer to perform a final import of test cases when
|
||||
terminating. This is beneficial for `-M` main fuzzers to ensure it has all
|
||||
unique test cases and hence you only need to `afl-cmin` this single
|
||||
queue.
|
||||
|
||||
- Setting `AFL_INPUT_LEN_MIN` and `AFL_INPUT_LEN_MAX` are an alternative to
|
||||
the afl-fuzz -g/-G command line option to control the minimum/maximum
|
||||
|
@ -402,7 +402,8 @@ typedef struct afl_env_vars {
|
||||
afl_exit_on_seed_issues, afl_try_affinity, afl_ignore_problems,
|
||||
afl_keep_timeouts, afl_no_crash_readme, afl_ignore_timeouts,
|
||||
afl_no_startup_calibration, afl_no_warn_instability,
|
||||
afl_post_process_keep_original, afl_crashing_seeds_as_new_crash;
|
||||
afl_post_process_keep_original, afl_crashing_seeds_as_new_crash,
|
||||
afl_final_sync;
|
||||
|
||||
u8 *afl_tmpdir, *afl_custom_mutator_library, *afl_python_module, *afl_path,
|
||||
*afl_hang_tmout, *afl_forksrv_init_tmout, *afl_preload,
|
||||
|
@ -59,6 +59,7 @@ static char *afl_environment_variables[] = {
|
||||
"AFL_EXIT_ON_TIME",
|
||||
"AFL_EXIT_ON_SEED_ISSUES",
|
||||
"AFL_FAST_CAL",
|
||||
"AFL_FINAL_SYNC",
|
||||
"AFL_FORCE_UI",
|
||||
"AFL_FRIDA_DEBUG_MAPS",
|
||||
"AFL_FRIDA_DRIVER_NO_HOOK",
|
||||
|
@ -269,6 +269,13 @@ void read_afl_environment(afl_state_t *afl, char **envp) {
|
||||
afl->afl_env.afl_import_first =
|
||||
get_afl_env(afl_environment_variables[i]) ? 1 : 0;
|
||||
|
||||
} else if (!strncmp(env, "AFL_FINAL_SYNC",
|
||||
|
||||
afl_environment_variable_len)) {
|
||||
|
||||
afl->afl_env.afl_final_sync =
|
||||
get_afl_env(afl_environment_variables[i]) ? 1 : 0;
|
||||
|
||||
} else if (!strncmp(env, "AFL_CUSTOM_MUTATOR_ONLY",
|
||||
|
||||
afl_environment_variable_len)) {
|
||||
|
@ -2899,6 +2899,15 @@ stop_fuzzing:
|
||||
time_spent_working / afl->fsrv.total_execs);
|
||||
#endif
|
||||
|
||||
if (afl->afl_env.afl_final_sync) {
|
||||
|
||||
SAYF(cYEL "[!] " cRST "\nPerforming final sync, this make take some time ...\n");
|
||||
sync_fuzzers(afl);
|
||||
write_bitmap(afl);
|
||||
SAYF(cYEL "[!] " cRST "Done!\n\n");
|
||||
|
||||
}
|
||||
|
||||
if (afl->is_main_node) {
|
||||
|
||||
u8 path[PATH_MAX];
|
||||
|
Reference in New Issue
Block a user