summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Bulekov2021-01-17 21:10:14 +0100
committerPaolo Bonzini2021-02-08 14:43:54 +0100
commit61f90e0461984438ddd5064d1c03133f561dc848 (patch)
treee11bf6602d6d91883133d0cd4a20f57ad3b96ab5
parentdocs/fuzz: fix pre-meson path (diff)
downloadqemu-61f90e0461984438ddd5064d1c03133f561dc848.tar.gz
qemu-61f90e0461984438ddd5064d1c03133f561dc848.tar.xz
qemu-61f90e0461984438ddd5064d1c03133f561dc848.zip
fuzz: log the arguments used to initialize QEMU
This is useful for building reproducers. Instead checking the code or the QEMU_FUZZ_ARGS, the arguments are at the top of the crash log. Signed-off-by: Alexander Bulekov <alxndr@bu.edu> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20210117201014.271610-3-alxndr@bu.edu>
-rw-r--r--tests/qtest/fuzz/fuzz.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c
index 238866a037..496d11a231 100644
--- a/tests/qtest/fuzz/fuzz.c
+++ b/tests/qtest/fuzz/fuzz.c
@@ -159,6 +159,8 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
char *target_name;
const char *bindir;
char *datadir;
+ GString *cmd_line;
+ gchar *pretty_cmd_line;
bool serialize = false;
/* Initialize qgraph and modules */
@@ -217,7 +219,7 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
}
/* Run QEMU's softmmu main with the fuzz-target dependent arguments */
- GString *cmd_line = fuzz_target->get_init_cmdline(fuzz_target);
+ cmd_line = fuzz_target->get_init_cmdline(fuzz_target);
g_string_append_printf(cmd_line, " %s -qtest /dev/null ",
getenv("QTEST_LOG") ? "" : "-qtest-log none");
@@ -226,6 +228,13 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp)
wordexp(cmd_line->str, &result, 0);
g_string_free(cmd_line, true);
+ if (getenv("QTEST_LOG")) {
+ pretty_cmd_line = g_strjoinv(" ", result.we_wordv + 1);
+ printf("Starting %s with Arguments: %s\n",
+ result.we_wordv[0], pretty_cmd_line);
+ g_free(pretty_cmd_line);
+ }
+
qemu_init(result.we_wordc, result.we_wordv, NULL);
/* re-enable the rcu atfork, which was previously disabled in qemu_init */