aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2023-06-06 08:52:46 +0200
committerFabian Meumertzheim <fabian@meumertzhe.im>2023-06-06 09:12:58 +0200
commitc29e73cd486ecff0f2c381747bd7e1b0d6ffc7cd (patch)
tree3bdd212f7d316c5ddac743320dbb64249ce0c14a
parent0615190974864714ee2318654035d09f449145a3 (diff)
downloadjazzer-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.java6
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());