diff options
author | Fabian Meumertzheim <meumertzheim@code-intelligence.com> | 2023-06-06 08:52:46 +0200 |
---|---|---|
committer | Fabian Meumertzheim <fabian@meumertzhe.im> | 2023-06-06 09:12:58 +0200 |
commit | c29e73cd486ecff0f2c381747bd7e1b0d6ffc7cd (patch) | |
tree | 3bdd212f7d316c5ddac743320dbb64249ce0c14a | |
parent | 0615190974864714ee2318654035d09f449145a3 (diff) | |
download | jazzer-api-c29e73cd486ecff0f2c381747bd7e1b0d6ffc7cd.tar.gz |
driver: Do not prepare for a subprocess for `-fork=0`
`-fork=0` and similar flags disable the respective libFuzzer modes and
thus should not lead Jazzer to prepare for being run in a subprocess,
e.g., not set `-seed`.
-rw-r--r-- | src/main/java/com/code_intelligence/jazzer/Jazzer.java | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/main/java/com/code_intelligence/jazzer/Jazzer.java b/src/main/java/com/code_intelligence/jazzer/Jazzer.java index e0f7bad6..449e78c3 100644 --- a/src/main/java/com/code_intelligence/jazzer/Jazzer.java +++ b/src/main/java/com/code_intelligence/jazzer/Jazzer.java @@ -97,8 +97,10 @@ public class Jazzer { // In LibFuzzer's fork mode, the subprocesses created continuously by the main libFuzzer // process do not create further subprocesses. Creating a wrapper script for each subprocess // is an unnecessary overhead. - final boolean spawnsSubprocesses = args.stream().anyMatch( - arg -> arg.startsWith("-fork=") || arg.startsWith("-jobs=") || arg.startsWith("-merge=")); + final boolean spawnsSubprocesses = args.stream().anyMatch(arg + -> (arg.startsWith("-fork=") && !arg.equals("-fork=0")) + || (arg.startsWith("-jobs=") && !arg.equals("-jobs=0")) + || (arg.startsWith("-merge=") && !arg.equals("-merge=0"))); // argv0 is printed by libFuzzer during reproduction, so have it contain "jazzer". String arg0 = spawnsSubprocesses ? prepareArgv0(new HashMap<>()) : "jazzer"; args = Stream.concat(Stream.of(arg0), args.stream()).collect(toList()); |