From c29e73cd486ecff0f2c381747bd7e1b0d6ffc7cd Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Tue, 6 Jun 2023 08:52:46 +0200 Subject: [PATCH] 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`. --- src/main/java/com/code_intelligence/jazzer/Jazzer.java | 6 ++++-- 1 file 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 e0f7bad60..449e78c3c 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 @@ private static void start(List args) throws IOException, InterruptedExce // 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());