When not all fields of the --global option are provided, QEMU might crash: $ qemu-system-x86_64 -global driver=isa-fdc qemu-system-x86_64: ../../devel/qemu/qapi/string-input-visitor.c:394: string_input_visitor_new: Assertion `str' failed. Aborted (core dumped)
Fix by only allowing --global with all 3 fields: $ qemu-system-x86_64 -global driver=isa-fdc Invalid 'global' option format. It must be provided as: --global <driver>.<property>=<value> Reported-by: Thomas Huth <th...@redhat.com> Suggested-by: Markus Armbruster <arm...@redhat.com> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/604 Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- v3: Change qemu_global_option (Markus) Supersedes: <20211119122911.365036-1-phi...@redhat.com> --- softmmu/qdev-monitor.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c index 01f3834db57..558272b147c 100644 --- a/softmmu/qdev-monitor.c +++ b/softmmu/qdev-monitor.c @@ -1029,13 +1029,10 @@ int qemu_global_option(const char *str) qemu_opt_set(opts, "value", str + offset + 1, &error_abort); return 0; } + printf("Invalid 'global' option format. It must be provided as:\n"); + printf(" --global <driver>.<property>=<value>\n"); - opts = qemu_opts_parse_noisily(&qemu_global_opts, str, false); - if (!opts) { - return -1; - } - - return 0; + return -1; } bool qmp_command_available(const QmpCommand *cmd, Error **errp) -- 2.31.1