about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authormarc <marc@marc.srlabs.de>2023-08-11 11:22:18 +0200
committermarc <marc@marc.srlabs.de>2023-08-11 11:22:18 +0200
commit8823f22a9c87123c1bfcc5bff10044de4c7a4a1f (patch)
tree58b8b723b333aa0cf10a9d9c7597331ba30ad481 /src
parent1cd9258768253e082baa1cc453c578b373839dbc (diff)
downloadafl++-8823f22a9c87123c1bfcc5bff10044de4c7a4a1f.tar.gz
add AFL_FINAL_SYNC
Diffstat (limited to 'src')
-rw-r--r--src/afl-fuzz-state.c7
-rw-r--r--src/afl-fuzz.c9
2 files changed, 16 insertions, 0 deletions
diff --git a/src/afl-fuzz-state.c b/src/afl-fuzz-state.c
index 5a6b95cf..97e00415 100644
--- a/src/afl-fuzz-state.c
+++ b/src/afl-fuzz-state.c
@@ -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)) {
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index cdb3f996..c2ec4a1d 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -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];