diff options
author | Fabian Meumertzheim <meumertzheim@code-intelligence.com> | 2021-10-18 16:09:56 +0200 |
---|---|---|
committer | Fabian Meumertzheim <fabian@meumertzhe.im> | 2021-10-19 11:07:51 +0200 |
commit | e824badc802d8fc091882f9b714d92a9a71569bc (patch) | |
tree | 79b37f2bb2cc0ff9a8ef3e8a4830580eede9ebcb /agent/src | |
parent | eff82062143cdcc13f3a20d1fec944dc4de9187e (diff) | |
download | jazzer-api-e824badc802d8fc091882f9b714d92a9a71569bc.tar.gz |
Clean the stack traces of findings
Diffstat (limited to 'agent/src')
-rw-r--r-- | agent/src/main/java/com/code_intelligence/jazzer/autofuzz/FuzzTarget.java | 21 |
1 files changed, 21 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 9806bb3c..677d107e 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 @@ -145,6 +145,7 @@ public class FuzzTarget { return; } } + cleanStackTraces(cause); throw cause; } catch (Throwable t) { System.err.println("Unexpected exception encountered during autofuzz"); @@ -152,4 +153,24 @@ public class FuzzTarget { System.exit(1); } } + + // Removes all stack trace elements that live in the Java standard library, internal JDK classes + // or the autofuzz package from the bottom of all stack frames. + private static void cleanStackTraces(Throwable t) { + Throwable cause = t; + while (cause != null) { + StackTraceElement[] elements = cause.getStackTrace(); + int firstInterestingPos; + for (firstInterestingPos = elements.length - 1; firstInterestingPos > 0; + firstInterestingPos--) { + String className = elements[firstInterestingPos].getClassName(); + if (!className.startsWith("com.code_intelligence.jazzer.autofuzz") + && !className.startsWith("java.") && !className.startsWith("jdk.")) { + break; + } + } + cause.setStackTrace(Arrays.copyOfRange(elements, 0, firstInterestingPos + 1)); + cause = cause.getCause(); + } + } } |