diff options
author | Fabian Meumertzheim <meumertzheim@code-intelligence.com> | 2021-05-21 15:51:32 +0200 |
---|---|---|
committer | Fabian Meumertzheim <fabian@meumertzhe.im> | 2021-05-21 16:02:42 +0200 |
commit | b71bd3275a26bc79952138c00b4f5a71b78feeae (patch) | |
tree | 0f65dad49939d926dcfac9e621bfc8c31dd00433 /agent | |
parent | b08828efdf162a099efcfdf2a6ea6bba3e3b1769 (diff) | |
download | jazzer-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.kt | 5 |
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 |