diff options
author | Fabian Meumertzheim <meumertzheim@code-intelligence.com> | 2021-10-19 12:20:26 +0200 |
---|---|---|
committer | Khaled Yakdan <yakdan@code-intelligence.de> | 2021-10-19 13:01:15 +0200 |
commit | f14bd5d6b90be5cf8ecbc9d6f86ade5caed269ed (patch) | |
tree | a268ac4b360966586af8ca2f782cf54b54a96a92 /agent/src/main/java/com | |
parent | b9ff3937a2fcf732827a3d0a3d0c1e163c1c536e (diff) | |
download | jazzer-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.java | 5 | ||||
-rw-r--r-- | agent/src/main/java/com/code_intelligence/jazzer/autofuzz/Meta.java | 4 |
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(); |