diff --git a/fuzzer/Fuzzer.java b/fuzzer/Fuzzer.java index 4ea3793c44732a161c1f9f1b4aa5a803212c13ae..1d8a8c0a2cfda5c1b1678325d9b5b1b267c333ad 100644 --- a/fuzzer/Fuzzer.java +++ b/fuzzer/Fuzzer.java @@ -23,7 +23,7 @@ public class Fuzzer { Random rg = new Random(); - }catch (Exception e){s + }catch (Exception e){ e.printStackTrace(System.err); System.exit(1); }finally{ @@ -188,8 +188,15 @@ public class Fuzzer { } //DZL - public String generateOffsetOverFlow() { - return null; + public String generateOffsetOverFlow(Random rg) { + String line = new String(); + Boolean positive = rg.nextBoolean(); + if(!positive) { + line.concat("MOV R0 -70000"); + }else { + line.concat("MOV R0 70000"); + } + return line; } public String generateLineOverFlow() { @@ -220,9 +227,14 @@ public class Fuzzer { return line; } - //DZL public String generateDirtyRegistyRead() { - return null; + String line = new String(); + + for(int x=1;x<maxRegistry-1;x++) { + line.concat("ADD R0 R0 R"+x+"%n"); + } + line.concat("RET R0"); + return line; } public String generateDirtyMemoryRead(Random rg) { @@ -282,11 +294,22 @@ public class Fuzzer { return line; } - //DZL public String generateInvalidOperands(Random rg) { - //rg.nextInt(3) - //register = rg.nextInt(maxRegistry); - //wrong operands + int regs = rg.nextInt(4); + String line = new String(); + Boolean hasval = rg.nextBoolean(); + int index = rg.nextInt(validOpcodes.size()); + String opcode = validOpcodes.get(index); + line.concat(opcode); + for(int x=0;x<regs;x++) { + int register = rg.nextInt(maxRegistry); + line.concat(" R"+register); + } + if(hasval) { + int value=rg.nextInt(maxMemory); + line.concat(" "+value); + } + //too many arguments return null; }