aboutsummaryrefslogtreecommitdiff
path: root/agent
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2021-05-21 15:51:32 +0200
committerFabian Meumertzheim <fabian@meumertzhe.im>2021-05-21 16:02:42 +0200
commitb71bd3275a26bc79952138c00b4f5a71b78feeae (patch)
tree0f65dad49939d926dcfac9e621bfc8c31dd00433 /agent
parentb08828efdf162a099efcfdf2a6ea6bba3e3b1769 (diff)
downloadjazzer-api-b71bd3275a26bc79952138c00b4f5a71b78feeae.tar.gz
Exit early for transform on internal classes
Bail out early if we would instrument ourselves. This prevents ClassCircularityErrors as we might need to load additional Jazzer classes until we reach the full exclusion logic.
Diffstat (limited to 'agent')
-rw-r--r--agent/src/main/java/com/code_intelligence/jazzer/agent/RuntimeInstrumentor.kt5
1 files changed, 4 insertions, 1 deletions
diff --git a/agent/src/main/java/com/code_intelligence/jazzer/agent/RuntimeInstrumentor.kt b/agent/src/main/java/com/code_intelligence/jazzer/agent/RuntimeInstrumentor.kt
index 0d643c2d..79964b7e 100644
--- a/agent/src/main/java/com/code_intelligence/jazzer/agent/RuntimeInstrumentor.kt
+++ b/agent/src/main/java/com/code_intelligence/jazzer/agent/RuntimeInstrumentor.kt
@@ -38,7 +38,6 @@ private val BASE_INCLUDED_CLASS_NAME_GLOBS = listOf(
private val BASE_EXCLUDED_CLASS_NAME_GLOBS = listOf(
"\\[**", // array types
- "com.code_intelligence.jazzer.**",
"com.sun.**", // package for Proxy objects
"java.**",
"jaz.Ter", // safe companion of the honeypot class used by sanitizers
@@ -155,6 +154,10 @@ internal class RuntimeInstrumentor(
classfileBuffer: ByteArray,
): ByteArray? {
return try {
+ // Bail out early if we would instrument ourselves. This prevents ClassCircularityErrors as we might need to
+ // load additional Jazzer classes until we reach the full exclusion logic.
+ if (internalClassName.startsWith("com/code_intelligence/jazzer/"))
+ return null
transformInternal(internalClassName, classfileBuffer)
} catch (t: Throwable) {
// Throwables raised from transform are silently dropped, making it extremely hard to detect instrumentation