about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJunwha <qbit@unist.ac.kr>2023-08-04 18:36:58 +0900
committerJunwha <qbit@unist.ac.kr>2023-08-04 18:36:58 +0900
commitfcdfe9e990d84ab477cd3c571cbf540e8bc8e15a (patch)
treefa5e386c1a5730137bebd1b8c1d0228f243a382a
parenta61e1ffe4dceb5b4dec3409faf037bea4c05bef9 (diff)
downloadafl++-fcdfe9e990d84ab477cd3c571cbf540e8bc8e15a.tar.gz
Define AFL_CRASHING_SEEDS_AS_NEW_CRASH as env variable
- and fix typo

Signed-off-by: Junwha <qbit@unist.ac.kr>
-rw-r--r--include/afl-fuzz.h6
-rw-r--r--src/afl-fuzz-init.c30
-rw-r--r--src/afl-fuzz-state.c7
-rw-r--r--src/afl-fuzz.c1
4 files changed, 26 insertions, 18 deletions
diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h
index 7bedc98f..18352acb 100644
--- a/include/afl-fuzz.h
+++ b/include/afl-fuzz.h
@@ -1,3 +1,4 @@
+
 /*
    american fuzzy lop++ - fuzzer header
    ------------------------------------
@@ -408,7 +409,7 @@ typedef struct afl_env_vars {
       *afl_max_det_extras, *afl_statsd_host, *afl_statsd_port,
       *afl_crash_exitcode, *afl_statsd_tags_flavor, *afl_testcache_size,
       *afl_testcache_entries, *afl_child_kill_signal, *afl_fsrv_kill_signal,
-      *afl_target_env, *afl_persistent_record, *afl_exit_on_time;
+      *afl_target_env, *afl_persistent_record, *afl_exit_on_time, *afl_crashing_seeds_as_new_crash;
 
   s32 afl_pizza_mode;
 
@@ -539,8 +540,7 @@ typedef struct afl_state {
       expand_havoc,                /* perform expensive havoc after no find */
       cycle_schedules,                  /* cycle power schedules?           */
       old_seed_selection,               /* use vanilla afl seed selection   */
-      reinit_table,                     /* reinit the queue weight table    */
-      crashing_seeds_as_new_crash; /* treat crashing seeds as normal corpus */
+      reinit_table;                     /* reinit the queue weight table    */
 
   u8 *virgin_bits,                      /* Regions yet untouched by fuzzing */
       *virgin_tmout,                    /* Bits we haven't seen in tmouts   */
diff --git a/src/afl-fuzz-init.c b/src/afl-fuzz-init.c
index 6b7f3036..d994d749 100644
--- a/src/afl-fuzz-init.c
+++ b/src/afl-fuzz-init.c
@@ -1056,17 +1056,19 @@ void perform_dry_run(afl_state_t *afl) {
               "skipping",
               fn, (int)(s8)afl->fsrv.crash_exitcode);
 
-        } else if (afl->crashing_seeds_as_new_crash) {
-          
-          WARNF(
-              "Test case '%s' results in a crash,"
-              "as AFL_CRASHING_SEEDS_AS_NEW_CRASH is set, "
-              "saving as a crash", fn);
-
         } else {
+          if (afl->afl_env.afl_crashing_seeds_as_new_crash) {
+          
+            WARNF(
+                "Test case '%s' results in a crash, "
+                "as AFL_CRASHING_SEEDS_AS_NEW_CRASH is set, "
+                "saving as a new crash", fn);
+            
+          } else {
 
-          WARNF("Test case '%s' results in a crash, skipping", fn);
-
+            WARNF("Test case '%s' results in a crash, skipping", fn);
+          
+          }
         }
 
         if (afl->afl_env.afl_exit_on_seed_issues) {
@@ -1085,8 +1087,8 @@ void perform_dry_run(afl_state_t *afl) {
 
         }
 
-        /* Crashing corpus will regrad as normal, and categorized as new crash at fuzzing  */
-        if (afl->crashing_seeds_as_new_crash) {
+        /* Crashing seeds will be regarded as new crashes on startup */
+        if (afl->afl_env.afl_crashing_seeds_as_new_crash) {
           
           ++afl->total_crashes;
 
@@ -1139,9 +1141,6 @@ void perform_dry_run(afl_state_t *afl) {
 
         } else {
 
-          q->disabled = 1;
-          q->perf_score = 0;
-
           u32 i = 0;
           while (unlikely(i < afl->queued_items && afl->queue_buf[i] &&
                           afl->queue_buf[i]->disabled)) {
@@ -1171,6 +1170,9 @@ void perform_dry_run(afl_state_t *afl) {
 
         }
         
+        q->disabled = 1;
+        q->perf_score = 0;
+
         break;  
       
       case FSRV_RUN_ERROR:
diff --git a/src/afl-fuzz-state.c b/src/afl-fuzz-state.c
index 99f69314..5a6b95cf 100644
--- a/src/afl-fuzz-state.c
+++ b/src/afl-fuzz-state.c
@@ -200,6 +200,13 @@ void read_afl_environment(afl_state_t *afl, char **envp) {
             afl->afl_env.afl_exit_on_time =
                 (u8 *)get_afl_env(afl_environment_variables[i]);
 
+          } else if (!strncmp(env, "AFL_CRASHING_SEEDS_AS_NEW_CRASH",
+
+                              afl_environment_variable_len)) {
+
+            afl->afl_env.afl_crashing_seeds_as_new_crash =
+                atoi((u8 *)get_afl_env(afl_environment_variables[i]));
+
           } else if (!strncmp(env, "AFL_NO_AFFINITY",
 
                               afl_environment_variable_len)) {
diff --git a/src/afl-fuzz.c b/src/afl-fuzz.c
index 5cbebb0e..51ca4ee6 100644
--- a/src/afl-fuzz.c
+++ b/src/afl-fuzz.c
@@ -1573,7 +1573,6 @@ int main(int argc, char **argv_orig, char **envp) {
   if (get_afl_env("AFL_NO_ARITH")) { afl->no_arith = 1; }
   if (get_afl_env("AFL_SHUFFLE_QUEUE")) { afl->shuffle_queue = 1; }
   if (get_afl_env("AFL_EXPAND_HAVOC_NOW")) { afl->expand_havoc = 1; }
-  if (get_afl_env("AFL_CRASHING_SEEDS_AS_NEW_CRASH")) { afl->crashing_seeds_as_new_crash = 1; }
   
   if (afl->afl_env.afl_autoresume) {