[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] vl.c: Avoid segfault when started with no arguments
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH] vl.c: Avoid segfault when started with no arguments |
Date: |
Wed, 22 Feb 2012 22:40:00 +0000 |
Fix a bug (introduced in commit a0abe47) 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: Peter Maydell <address@hidden>
---
Oops, sorry about that... I must have tested the case where you do
pass -kernel &co but forgot to test the case where you don't.
vl.c | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/vl.c b/vl.c
index 7a8cc08..8375576 100644
--- a/vl.c
+++ b/vl.c
@@ -2188,7 +2188,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;
@@ -3247,12 +3247,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 = "";
}
--
1.7.5.4
- [Qemu-devel] [PATCH] vl.c: Avoid segfault when started with no arguments,
Peter Maydell <=