diff options
author | Khaled Yakdan <yakdan@code-intelligence.com> | 2021-10-14 11:49:00 +0200 |
---|---|---|
committer | Fabian Meumertzheim <fabian@meumertzhe.im> | 2021-10-19 11:07:51 +0200 |
commit | 8311978af16a7e0a9661457b13423adc47540dc8 (patch) | |
tree | 0bb18a93a11eb2a7540b996a34b99d0f276dab7f /agent/src | |
parent | b8509959fe239b81cb3fd9a1e219c8f285c4c25d (diff) | |
download | jazzer-api-8311978af16a7e0a9661457b13423adc47540dc8.tar.gz |
refactor CannedFuzzedDataProvider so that it can is useful for multiple tests
Diffstat (limited to 'agent/src')
-rw-r--r-- | agent/src/main/java/com/code_intelligence/jazzer/api/CannedFuzzedDataProvider.java | 19 | ||||
-rw-r--r-- | agent/src/test/java/com/code_intelligence/jazzer/autofuzz/MetaTest.java | 26 |
2 files changed, 20 insertions, 25 deletions
diff --git a/agent/src/main/java/com/code_intelligence/jazzer/api/CannedFuzzedDataProvider.java b/agent/src/main/java/com/code_intelligence/jazzer/api/CannedFuzzedDataProvider.java index a0556468..7209a497 100644 --- a/agent/src/main/java/com/code_intelligence/jazzer/api/CannedFuzzedDataProvider.java +++ b/agent/src/main/java/com/code_intelligence/jazzer/api/CannedFuzzedDataProvider.java @@ -14,12 +14,11 @@ package com.code_intelligence.jazzer.api; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.ObjectInputStream; +import java.io.*; import java.util.ArrayList; import java.util.Base64; import java.util.Iterator; +import java.util.List; /** * Replays recorded FuzzedDataProvider invocations that were executed while fuzzing. @@ -41,6 +40,20 @@ final public class CannedFuzzedDataProvider implements FuzzedDataProvider { nextReply = recordedReplies.iterator(); } + public static CannedFuzzedDataProvider create(List<Object> objects) { + try { + try (ByteArrayOutputStream bout = new ByteArrayOutputStream()) { + try (ObjectOutputStream out = new ObjectOutputStream(bout)) { + out.writeObject(new ArrayList<>(objects)); + String base64 = Base64.getEncoder().encodeToString(bout.toByteArray()); + return new CannedFuzzedDataProvider(base64); + } + } + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + @Override public boolean consumeBoolean() { return (boolean) nextReply.next(); diff --git a/agent/src/test/java/com/code_intelligence/jazzer/autofuzz/MetaTest.java b/agent/src/test/java/com/code_intelligence/jazzer/autofuzz/MetaTest.java index 1e1fe09e..c491ed66 100644 --- a/agent/src/test/java/com/code_intelligence/jazzer/autofuzz/MetaTest.java +++ b/agent/src/test/java/com/code_intelligence/jazzer/autofuzz/MetaTest.java @@ -20,44 +20,26 @@ import static org.junit.Assert.assertTrue; import com.code_intelligence.jazzer.api.CannedFuzzedDataProvider; import com.code_intelligence.jazzer.api.FuzzedDataProvider; import com.google.json.JsonSanitizer; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.util.ArrayList; + import java.util.Arrays; -import java.util.Base64; import java.util.Collections; -import java.util.List; + import org.junit.Test; public class MetaTest { - private static FuzzedDataProvider makeFuzzedDataProvider(List<Object> replies) { - try { - try (ByteArrayOutputStream bout = new ByteArrayOutputStream()) { - try (ObjectOutputStream out = new ObjectOutputStream(bout)) { - out.writeObject(new ArrayList<>(replies)); - String base64 = Base64.getEncoder().encodeToString(bout.toByteArray()); - return new CannedFuzzedDataProvider(base64); - } - } - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - public static boolean isFive(int arg) { return arg == 5; } @Test public void testConsume() { - FuzzedDataProvider data = makeFuzzedDataProvider(Collections.singletonList(5)); + FuzzedDataProvider data = CannedFuzzedDataProvider.create(Collections.singletonList(5)); assertEquals(5, Meta.consume(data, int.class)); } @Test public void testAutofuzz() { - FuzzedDataProvider data = makeFuzzedDataProvider(Arrays.asList(5, + FuzzedDataProvider data = CannedFuzzedDataProvider.create(Arrays.asList(5, 6, // remainingBytes "foo", 6, // remainingBytes |