提交 967c0da7 编写于 作者: P Peter Maydell 提交者: Anthony Liguori

vl.c: Avoid segfault when started with no arguments

Fix a bug (introduced in commit a0abe474) where a command line which
specified no machine arguments (either explicitly or implicitly via
-kernel &co) would result in a segfault because of a NULL pointer
returned from qemu_opts_find(qemu_find_opts("machine"), 0).
Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 9ebe95fb
......@@ -2261,7 +2261,7 @@ int main(int argc, char **argv, char **envp)
DisplayState *ds;
DisplayChangeListener *dcl;
int cyls, heads, secs, translation;
QemuOpts *hda_opts = NULL, *opts;
QemuOpts *hda_opts = NULL, *opts, *machine_opts;
QemuOptsList *olist;
int optind;
const char *optarg;
......@@ -3320,12 +3320,15 @@ int main(int argc, char **argv, char **envp)
exit(1);
}
kernel_filename = qemu_opt_get(qemu_opts_find(qemu_find_opts("machine"),
0), "kernel");
initrd_filename = qemu_opt_get(qemu_opts_find(qemu_find_opts("machine"),
0), "initrd");
kernel_cmdline = qemu_opt_get(qemu_opts_find(qemu_find_opts("machine"),
0), "append");
machine_opts = qemu_opts_find(qemu_find_opts("machine"), 0);
if (machine_opts) {
kernel_filename = qemu_opt_get(machine_opts, "kernel");
initrd_filename = qemu_opt_get(machine_opts, "initrd");
kernel_cmdline = qemu_opt_get(machine_opts, "append");
} else {
kernel_filename = initrd_filename = kernel_cmdline = NULL;
}
if (!kernel_cmdline) {
kernel_cmdline = "";
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册