aboutsummaryrefslogtreecommitdiff
path: root/agent/src
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2021-10-18 16:09:56 +0200
committerFabian Meumertzheim <fabian@meumertzhe.im>2021-10-19 11:07:51 +0200
commite824badc802d8fc091882f9b714d92a9a71569bc (patch)
tree79b37f2bb2cc0ff9a8ef3e8a4830580eede9ebcb /agent/src
parenteff82062143cdcc13f3a20d1fec944dc4de9187e (diff)
downloadjazzer-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.java21
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();
+ }
+ }
}