about summary refs log tree commit diff
path: root/afl-fuzz.c
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2019-07-16 08:34:17 +0200
committervan Hauser <vh@thc.org>2019-07-16 08:34:17 +0200
commit8a4cdd56d4d7557a54b0f28af7edceaddfb30663 (patch)
treeefaf460b40d94183f235073ac1d10f2268cb70c4 /afl-fuzz.c
parent32525238238e96ec0ce64a36f70558f76bc90ff5 (diff)
downloadafl++-8a4cdd56d4d7557a54b0f28af7edceaddfb30663.tar.gz
added gcc_plugin
Diffstat (limited to 'afl-fuzz.c')
-rw-r--r--afl-fuzz.c62
1 files changed, 13 insertions, 49 deletions
diff --git a/afl-fuzz.c b/afl-fuzz.c
index 3a8e5750..81dff98c 100644
--- a/afl-fuzz.c
+++ b/afl-fuzz.c
@@ -5234,6 +5234,7 @@ static u32 calculate_score(struct queue_entry* q) {
 
   // MOpt mode
   if (limit_time_sig != 0 && max_depth - q->depth < 3) perf_score *= 2;
+  else if (perf_score < 1) perf_score = 1; // Add a lower bound to AFLFast's energy assignment strategies
 
   /* Make sure that we don't go over limit. */
 
@@ -10224,8 +10225,7 @@ static u8 core_fuzzing(char** argv) {
 			stage_max = (doing_det ? HAVOC_CYCLES_INIT : HAVOC_CYCLES) *
 				perf_score / havoc_div / 100;
 
-		}
-		else {
+		} else {
 
 			static u8 tmp[32];
 
@@ -10243,20 +10243,13 @@ static u8 core_fuzzing(char** argv) {
 
 		//for (; swarm_now < swarm_num; swarm_now++)
 		{
-
-
-			if (key_puppet == 1)
-			{
-				if (unlikely(orig_hit_cnt_puppet == 0))
-				{
+			if (key_puppet == 1) {
+				if (unlikely(orig_hit_cnt_puppet == 0)) {
 					orig_hit_cnt_puppet = queued_paths + unique_crashes;
 					last_limit_time_start = get_cur_time();
-					
 					SPLICE_CYCLES_puppet = (UR(SPLICE_CYCLES_puppet_up - SPLICE_CYCLES_puppet_low + 1) + SPLICE_CYCLES_puppet_low);
 				}
 			}
-
-
 			{
 			havoc_stage_puppet:
 
@@ -10266,14 +10259,11 @@ static u8 core_fuzzing(char** argv) {
 				   splice_cycle variable is set, generate different descriptions and such. */
 
 				if (!splice_cycle) {
-
 					stage_name = "MOpt core avoc";
 					stage_short = "MOpt core havoc";
 					stage_max = (doing_det ? HAVOC_CYCLES_INIT : HAVOC_CYCLES) *
 						perf_score / havoc_div / 100;
-
-				}
-				else {
+				} else {
 					static u8 tmp[32];
 					perf_score = orig_perf;
 					sprintf(tmp, "MOpt core splice %u", splice_cycle);
@@ -10282,31 +10272,20 @@ static u8 core_fuzzing(char** argv) {
 					stage_max = SPLICE_HAVOC * perf_score / havoc_div / 100;
 				}
 
-
-
 				if (stage_max < HAVOC_MIN) stage_max = HAVOC_MIN;
-
 				temp_len = len;
-
 				orig_hit_cnt = queued_paths + unique_crashes;
-
 				havoc_queued = queued_paths;
 
-
-
 				for (stage_cur = 0; stage_cur < stage_max; stage_cur++) {
 
 					u32 use_stacking = 1 << (1 + UR(HAVOC_STACK_POW2));
-
 					stage_cur_val = use_stacking;
 
-
-					for (i = 0; i < operator_num; i++)
-					{
+					for (i = 0; i < operator_num; i++) {
 						core_operator_cycles_puppet_v3[i] = core_operator_cycles_puppet_v2[i];
 					}
 
-
 					for (i = 0; i < use_stacking; i++) {
 
 						switch (select_algorithm()) {
@@ -10366,8 +10345,7 @@ static u8 core_fuzzing(char** argv) {
 							if (UR(2)) {
 								u32 pos = UR(temp_len - 1);
 								*(u16*)(out_buf + pos) -= 1 + UR(ARITH_MAX);
-							}
-							else {
+							} else {
 								u32 pos = UR(temp_len - 1);
 								u16 num = 1 + UR(ARITH_MAX);
 								*(u16*)(out_buf + pos) =
@@ -10377,8 +10355,7 @@ static u8 core_fuzzing(char** argv) {
 							if (UR(2)) {
 								u32 pos = UR(temp_len - 1);
 								*(u16*)(out_buf + pos) += 1 + UR(ARITH_MAX);
-							}
-							else {
+							} else {
 								u32 pos = UR(temp_len - 1);
 								u16 num = 1 + UR(ARITH_MAX);
 								*(u16*)(out_buf + pos) =
@@ -10394,8 +10371,7 @@ static u8 core_fuzzing(char** argv) {
 							if (UR(2)) {
 								u32 pos = UR(temp_len - 3);
 								*(u32*)(out_buf + pos) -= 1 + UR(ARITH_MAX);
-							}
-							else {
+							} else {
 								u32 pos = UR(temp_len - 3);
 								u32 num = 1 + UR(ARITH_MAX);
 								*(u32*)(out_buf + pos) =
@@ -10405,8 +10381,7 @@ static u8 core_fuzzing(char** argv) {
 							if (UR(2)) {
 								u32 pos = UR(temp_len - 3);
 								*(u32*)(out_buf + pos) += 1 + UR(ARITH_MAX);
-							}
-							else {
+							} else {
 								u32 pos = UR(temp_len - 3);
 								u32 num = 1 + UR(ARITH_MAX);
 								*(u32*)(out_buf + pos) =
@@ -10429,8 +10404,7 @@ static u8 core_fuzzing(char** argv) {
 							if (UR(2)) {
 								*(u16*)(out_buf + UR(temp_len - 1)) =
 									interesting_16[UR(sizeof(interesting_16) >> 1)];
-							}
-							else {
+							} else {
 								*(u16*)(out_buf + UR(temp_len - 1)) = SWAP16(
 									interesting_16[UR(sizeof(interesting_16) >> 1)]);
 							}
@@ -10446,8 +10420,7 @@ static u8 core_fuzzing(char** argv) {
 							if (UR(2)) {
 								*(u32*)(out_buf + UR(temp_len - 3)) =
 									interesting_32[UR(sizeof(interesting_32) >> 2)];
-							}
-							else {
+							} else {
 								*(u32*)(out_buf + UR(temp_len - 3)) = SWAP32(
 									interesting_32[UR(sizeof(interesting_32) >> 2)]);
 							}
@@ -10466,7 +10439,6 @@ static u8 core_fuzzing(char** argv) {
 							break;
 
 
-
 						case 13: {
 
 							/* Delete bytes. We're making this a bit more likely
@@ -10507,8 +10479,7 @@ static u8 core_fuzzing(char** argv) {
 									clone_len = choose_block_len(temp_len);
 									clone_from = UR(temp_len - clone_len + 1);
 
-								}
-								else {
+								} else {
 
 									clone_len = choose_block_len(HAVOC_BLK_XL);
 									clone_from = 0;
@@ -10575,17 +10546,10 @@ static u8 core_fuzzing(char** argv) {
 
 					}
 
-
 					tmp_core_time += 1;
 
-
-
-
 					u64 temp_total_found = queued_paths + unique_crashes;
 
-
-
-
 					if (common_fuzz_stuff(argv, out_buf, temp_len))
 						goto abandon_entry_puppet;