about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/afl-mutations.h83
-rw-r--r--src/afl-fuzz-one.c17
2 files changed, 37 insertions, 63 deletions
diff --git a/include/afl-mutations.h b/include/afl-mutations.h
index 31d0898a..9188a37f 100644
--- a/include/afl-mutations.h
+++ b/include/afl-mutations.h
@@ -65,14 +65,13 @@ enum {
   /* 27 */ MUT_DELONE,
   /* 28 */ MUT_INSERTONE,
   /* 29 */ MUT_ASCIINUM,
-  /* 30 */ MUT_NEG,
-  /* 31 */ MUT_INSERTASCIINUM,
-  /* 32 */ MUT_EXTRA_OVERWRITE,
-  /* 33 */ MUT_EXTRA_INSERT,
-  /* 34 */ MUT_AUTO_EXTRA_OVERWRITE,
-  /* 35 */ MUT_AUTO_EXTRA_INSERT,
-  /* 36 */ MUT_SPLICE_OVERWRITE,
-  /* 37 */ MUT_SPLICE_INSERT,
+  /* 30 */ MUT_INSERTASCIINUM,
+  /* 31 */ MUT_EXTRA_OVERWRITE,
+  /* 32 */ MUT_EXTRA_INSERT,
+  /* 33 */ MUT_AUTO_EXTRA_OVERWRITE,
+  /* 34 */ MUT_AUTO_EXTRA_INSERT,
+  /* 35 */ MUT_SPLICE_OVERWRITE,
+  /* 36 */ MUT_SPLICE_INSERT,
 
   MUT_MAX
 
@@ -199,6 +198,7 @@ u32 mutation_strategy_exploration_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_CLONE_INSERT,
     MUT_CLONE_INSERT,
     MUT_CLONE_INSERT,
+    MUT_CLONE_INSERT,
     MUT_OVERWRITE_COPY,
     MUT_OVERWRITE_COPY,
     MUT_OVERWRITE_COPY,
@@ -233,6 +233,9 @@ u32 mutation_strategy_exploration_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_FLIP8,
     MUT_FLIP8,
     MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
     MUT_SWITCH,
     MUT_SWITCH,
     MUT_SWITCH,
@@ -276,12 +279,8 @@ u32 mutation_strategy_exploration_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_ASCIINUM,
     MUT_ASCIINUM,
     MUT_ASCIINUM,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
+    MUT_ASCIINUM,
+    MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
@@ -335,7 +334,7 @@ u32 mutation_strategy_exploration_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
-    MUT_SPLICE_INSERT,
+    MUT_SPLICE_INSERT
 
 };
 
@@ -468,6 +467,7 @@ u32 mutation_strategy_exploration_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_CLONE_INSERT,
     MUT_CLONE_INSERT,
     MUT_CLONE_INSERT,
+    MUT_CLONE_INSERT,
     MUT_OVERWRITE_COPY,
     MUT_OVERWRITE_COPY,
     MUT_OVERWRITE_COPY,
@@ -504,6 +504,10 @@ u32 mutation_strategy_exploration_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_FLIP8,
     MUT_FLIP8,
     MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
     MUT_SWITCH,
     MUT_SWITCH,
     MUT_SWITCH,
@@ -541,12 +545,6 @@ u32 mutation_strategy_exploration_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_ASCIINUM,
     MUT_ASCIINUM,
     MUT_ASCIINUM,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
@@ -596,7 +594,7 @@ u32 mutation_strategy_exploration_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
-    MUT_SPLICE_INSERT,
+    MUT_SPLICE_INSERT
 
 };
 
@@ -766,6 +764,9 @@ u32 mutation_strategy_exploitation_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_FLIP8,
     MUT_FLIP8,
     MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
     MUT_SWITCH,
     MUT_SWITCH,
     MUT_SWITCH,
@@ -785,6 +786,7 @@ u32 mutation_strategy_exploitation_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_SHUFFLE,
     MUT_SHUFFLE,
     MUT_SHUFFLE,
+    MUT_SHUFFLE,
     MUT_DELONE,
     MUT_DELONE,
     MUT_DELONE,
@@ -801,12 +803,8 @@ u32 mutation_strategy_exploitation_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_ASCIINUM,
     MUT_ASCIINUM,
     MUT_ASCIINUM,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
+    MUT_ASCIINUM,
+    MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
@@ -857,7 +855,7 @@ u32 mutation_strategy_exploitation_text[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
-    MUT_SPLICE_INSERT,
+    MUT_SPLICE_INSERT
 
 };
 
@@ -959,6 +957,8 @@ u32 mutation_strategy_exploitation_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_ARITH32BE_,
     MUT_ARITH32BE_,
     MUT_ARITH32BE_,
+    MUT_ARITH32BE_,
+    MUT_ARITH32,
     MUT_ARITH32,
     MUT_ARITH32,
     MUT_ARITH32,
@@ -1027,6 +1027,10 @@ u32 mutation_strategy_exploitation_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_FLIP8,
     MUT_FLIP8,
     MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
+    MUT_FLIP8,
     MUT_SWITCH,
     MUT_SWITCH,
     MUT_SWITCH,
@@ -1062,12 +1066,6 @@ u32 mutation_strategy_exploitation_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_ASCIINUM,
     MUT_ASCIINUM,
     MUT_ASCIINUM,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
-    MUT_NEG,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
     MUT_INSERTASCIINUM,
@@ -1118,7 +1116,9 @@ u32 mutation_strategy_exploitation_binary[MUT_STRATEGY_ARRAY_SIZE] = {
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
     MUT_SPLICE_INSERT,
-    MUT_SPLICE_INSERT};
+    MUT_SPLICE_INSERT
+
+};
 
 u32 afl_mutate(afl_state_t *, u8 *, u32, u32, bool, bool, u8 *, u32, u32);
 u32 choose_block_len(afl_state_t *, u32);
@@ -1865,17 +1865,6 @@ inline u32 afl_mutate(afl_state_t *afl, u8 *buf, u32 len, u32 steps,
 
       }
 
-      case MUT_NEG: {
-
-        /* Neg byte. */
-
-        item = rand_below(afl, len);
-        buf[item] = ~buf[item];
-
-        break;
-
-      }
-
       case MUT_INSERTASCIINUM: {
 
         u32 len = 1 + rand_below(afl, 8);
diff --git a/src/afl-fuzz-one.c b/src/afl-fuzz-one.c
index e6b58713..bc267b15 100644
--- a/src/afl-fuzz-one.c
+++ b/src/afl-fuzz-one.c
@@ -2659,7 +2659,7 @@ havoc_stage:
 
         case MUT_FLIP8: {
 
-          /* Flip byte. */
+          /* Flip byte with a XOR 0xff. This is the same as NEG. */
 
 #ifdef INTROSPECTION
           snprintf(afl->m_tmp, sizeof(afl->m_tmp), " FLIP8_");
@@ -2987,21 +2987,6 @@ havoc_stage:
 
         }
 
-        case MUT_NEG: {
-
-          /* Neg byte. */
-
-#ifdef INTROSPECTION
-          snprintf(afl->m_tmp, sizeof(afl->m_tmp), " NEG_");
-          strcat(afl->mutation, afl->m_tmp);
-#endif
-          item = rand_below(afl, temp_len);
-
-          out_buf[item] = ~out_buf[item];
-          break;
-
-        }
-
         case MUT_INSERTASCIINUM: {
 
           u32 len = 1 + rand_below(afl, 8);