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>
This commit is contained in:
parent
92381157dd
commit
61f90e0461
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user