diff options
author | Fabian Meumertzheim <meumertzheim@code-intelligence.com> | 2023-05-25 16:55:07 +0200 |
---|---|---|
committer | Fabian Meumertzheim <fabian@meumertzhe.im> | 2023-05-31 11:58:55 +0200 |
commit | 0771f981b14df9c3eeea9cd380ac11cf02f719a6 (patch) | |
tree | 23a658d3df3daccae94e63559680d5b48fdf5b06 | |
parent | 467a06376e4cba9be0827bbec113408f9901bff9 (diff) | |
download | jazzer-api-0771f981b14df9c3eeea9cd380ac11cf02f719a6.tar.gz |
Revert "driver: Simplify agent installation"
This reverts commit 4dfee6dd6d31d29ff4267d392dbbd321b49ad90c and adds a
comment explaining why it wasn't a good idea.
-rw-r--r-- | src/main/java/com/code_intelligence/jazzer/driver/Driver.java | 12 | ||||
-rw-r--r-- | src/main/java/com/code_intelligence/jazzer/driver/OfflineInstrumentor.java | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/main/java/com/code_intelligence/jazzer/driver/Driver.java b/src/main/java/com/code_intelligence/jazzer/driver/Driver.java index 57a69140..a99a155d 100644 --- a/src/main/java/com/code_intelligence/jazzer/driver/Driver.java +++ b/src/main/java/com/code_intelligence/jazzer/driver/Driver.java @@ -108,11 +108,7 @@ public class Driver { args.add(getDefaultRssLimitMbArg()); } - // Do not modify properties beyond this point, loading Opt locks in their values. The agent will - // cause Opt to be loaded again, this time in the bootstrap class loader, but since all its - // fields are immutable that should not cause confusion. - AgentInstaller.install(Opt.hooks); - + // Do not modify properties beyond this point, loading Opt locks in their values. if (!Opt.instrumentOnly.isEmpty()) { boolean instrumentationSuccess = OfflineInstrumentor.instrumentJars(Opt.instrumentOnly); if (!instrumentationSuccess) { @@ -124,6 +120,7 @@ public class Driver { Driver.class.getClassLoader().setDefaultAssertionStatus(true); if (!Opt.autofuzz.isEmpty()) { + AgentInstaller.install(Opt.hooks); FuzzTargetHolder.fuzzTarget = FuzzTargetHolder.AUTOFUZZ_FUZZ_TARGET; return FuzzTargetRunner.startLibFuzzer(args); } @@ -134,6 +131,8 @@ public class Driver { exit(1); } + // The JUnitRunner calls AgentInstaller.install itself after modifying flags affecting the + // agent. if (JUnitRunner.isSupported()) { Optional<JUnitRunner> runner = JUnitRunner.create(targetClassName, args); if (runner.isPresent()) { @@ -141,6 +140,9 @@ public class Driver { } } + // Installing the agent after the following "findFuzzTarget" leads to an asan error + // in it on "Class.forName(targetClassName)", but only during native fuzzing. + AgentInstaller.install(Opt.hooks); FuzzTargetHolder.fuzzTarget = FuzzTargetFinder.findFuzzTarget(targetClassName); return FuzzTargetRunner.startLibFuzzer(args); } diff --git a/src/main/java/com/code_intelligence/jazzer/driver/OfflineInstrumentor.java b/src/main/java/com/code_intelligence/jazzer/driver/OfflineInstrumentor.java index 75d24f81..3e779d42 100644 --- a/src/main/java/com/code_intelligence/jazzer/driver/OfflineInstrumentor.java +++ b/src/main/java/com/code_intelligence/jazzer/driver/OfflineInstrumentor.java @@ -45,6 +45,8 @@ public class OfflineInstrumentor { * @return a boolean representing the success status */ public static boolean instrumentJars(List<String> jarLists) { + AgentInstaller.install(Opt.hooks); + // Clear Opt.dumpClassesDir before adding new instrumented classes File dumpClassesDir = new File(Opt.dumpClassesDir); if (dumpClassesDir.exists()) { |