From 97490a7149cbe92ff4862bcd42f3bf63e7115ec4 Mon Sep 17 00:00:00 2001 From: Ewen Smith <ewens@student.unimelb.edu.au> Date: Thu, 22 Oct 2020 16:40:36 +1100 Subject: [PATCH] Created flag to turn on/off dynamic probabilities --- fuzzer/Fuzzer.java | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/fuzzer/Fuzzer.java b/fuzzer/Fuzzer.java index 344a45f..fed23b7 100644 --- a/fuzzer/Fuzzer.java +++ b/fuzzer/Fuzzer.java @@ -113,16 +113,19 @@ public class Fuzzer { switch (runCount){ case 0: // Test with stack full - return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE); + return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE, false); case 1: // Test with stack full - return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE - 1); + return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE - 1, false); case 3: // Run static tests and empty stack - return getStaticTests() + generateInput(true, INSTRUCTION_MAX, 0); + return getStaticTests() + generateInput(true, INSTRUCTION_MAX, 0, false); + case 4: + // Test with dynamic probability + return generateInput(true, INSTRUCTION_MAX, 0, true); } // Run from random stack - return generateInput(true, INSTRUCTION_MAX, 0); + return generateInput(true, INSTRUCTION_MAX, 0, false); } /* @@ -154,7 +157,7 @@ public class Fuzzer { boolean stackFull = rand.nextInt(100) < STACK_FULL_PERCENTAGE; result.append(generateInput(false, - INSTRUCTION_MAX, MAX_STACK_SIZE)); + INSTRUCTION_MAX, MAX_STACK_SIZE, false)); // Increment generated generated += 1; } @@ -168,7 +171,7 @@ public class Fuzzer { * @param numInstructions for the line * @return the concatenated input for the program as a string */ - private static String generateInput(boolean correct, long numInstructions, int stackPreload ){ + private static String generateInput(boolean correct, long numInstructions, int stackPreload, boolean dynamicProb){ int stackSize = 0; int counter = 0; @@ -184,7 +187,9 @@ public class Fuzzer { Instruction newInstr = Instruction.getRandomInstruction(stackSize, addProb); stackSize = stackSize + newInstr.getStackChange(); result.append(completeInstruction(true, newInstr)); - addCountProb(newInstr); + if (dynamicProb) { + addCountProb(newInstr); + } counter += 1; } } else { @@ -193,11 +198,15 @@ public class Fuzzer { if (rand.nextInt(100) < LINE_ERROR_PERCENTAGE){ newInstr = Instruction.getRandomInstruction(2, addProb); result.append(completeInstruction(false, newInstr)); - addCountProb(newInstr); + if (dynamicProb) { + addCountProb(newInstr); + } } else { newInstr = Instruction.getRandomInstruction(stackSize, addProb); result.append(completeInstruction(true, newInstr)); - addCountProb(newInstr); + if (dynamicProb) { + addCountProb(newInstr); + } } stackSize = stackSize + newInstr.getStackChange(); if (stackSize < 0){ -- GitLab