aboutsummaryrefslogtreecommitdiff
path: root/agent/src/main/java/com/code_intelligence/jazzer/runtime/JazzerInternal.java
diff options
context:
space:
mode:
Diffstat (limited to 'agent/src/main/java/com/code_intelligence/jazzer/runtime/JazzerInternal.java')
-rw-r--r--agent/src/main/java/com/code_intelligence/jazzer/runtime/JazzerInternal.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/agent/src/main/java/com/code_intelligence/jazzer/runtime/JazzerInternal.java b/agent/src/main/java/com/code_intelligence/jazzer/runtime/JazzerInternal.java
index 8bc1b38c..79c851ad 100644
--- a/agent/src/main/java/com/code_intelligence/jazzer/runtime/JazzerInternal.java
+++ b/agent/src/main/java/com/code_intelligence/jazzer/runtime/JazzerInternal.java
@@ -14,9 +14,12 @@
package com.code_intelligence.jazzer.runtime;
+import java.util.ArrayList;
+
final public class JazzerInternal {
- // Accessed from native code.
- private static Throwable lastFinding;
+ private static final ArrayList<Runnable> ON_FUZZ_TARGET_READY_CALLBACKS = new ArrayList<>();
+
+ public static Throwable lastFinding;
// Accessed from api.Jazzer via reflection.
public static void reportFindingFromHook(Throwable finding) {
@@ -26,4 +29,13 @@ final public class JazzerInternal {
// target returns even if this Error is swallowed.
throw new HardToCatchError();
}
+
+ public static void registerOnFuzzTargetReadyCallback(Runnable callback) {
+ ON_FUZZ_TARGET_READY_CALLBACKS.add(callback);
+ }
+
+ public static void onFuzzTargetReady(String fuzzTargetClass) {
+ ON_FUZZ_TARGET_READY_CALLBACKS.forEach(Runnable::run);
+ ON_FUZZ_TARGET_READY_CALLBACKS.clear();
+ }
}