aboutsummaryrefslogtreecommitdiff
path: root/agent/src/main/java/com
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2021-10-19 12:20:26 +0200
committerKhaled Yakdan <yakdan@code-intelligence.de>2021-10-19 13:01:15 +0200
commitf14bd5d6b90be5cf8ecbc9d6f86ade5caed269ed (patch)
treea268ac4b360966586af8ca2f782cf54b54a96a92 /agent/src/main/java/com
parentb9ff3937a2fcf732827a3d0a3d0c1e163c1c536e (diff)
downloadjazzer-api-f14bd5d6b90be5cf8ecbc9d6f86ade5caed269ed.tar.gz
Rescan the classpath when seeing many AutofillConstructionExceptions
Diffstat (limited to 'agent/src/main/java/com')
-rw-r--r--agent/src/main/java/com/code_intelligence/jazzer/autofuzz/FuzzTarget.java5
-rw-r--r--agent/src/main/java/com/code_intelligence/jazzer/autofuzz/Meta.java4
2 files changed, 9 insertions, 0 deletions
diff --git a/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/FuzzTarget.java b/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/FuzzTarget.java
index 9cb74a11..0cc967bb 100644
--- a/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/FuzzTarget.java
+++ b/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/FuzzTarget.java
@@ -172,6 +172,11 @@ public class FuzzTarget {
System.err.printf("Failed to generate valid arguments to '%s' in %d attempts; giving up%n",
methodReference, executionsSinceLastInvocation);
System.exit(1);
+ } else if (executionsSinceLastInvocation >= MAX_EXECUTIONS_WITHOUT_INVOCATION / 2) {
+ // The application under test might perform classpath modifications or create classes
+ // dynamically that implement interfaces or extend abstract classes. Rescanning the
+ // classpath might help with constructing objects.
+ Meta.rescanClasspath();
}
} catch (AutofuzzInvocationException e) {
executionsSinceLastInvocation = 0;
diff --git a/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/Meta.java b/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/Meta.java
index f151dea0..1f35c0a4 100644
--- a/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/Meta.java
+++ b/agent/src/main/java/com/code_intelligence/jazzer/autofuzz/Meta.java
@@ -234,6 +234,10 @@ public class Meta {
}
}
+ static void rescanClasspath() {
+ implementingClassesCache.clear();
+ }
+
static boolean isTest() {
String value = System.getenv("JAZZER_AUTOFUZZ_TESTING");
return value != null && !value.isEmpty();