Message ID | 1329950400-24354-1-git-send-email-peter.maydell@linaro.org |
---|---|
State | Accepted |
Commit | 967c0da73a7b0da186baba6632301d83644a570c |
Headers | show |
On 02/22/2012 04:40 PM, Peter Maydell wrote: > 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<peter.maydell@linaro.org> Applied. Thanks. Regards, Anthony Liguori > --- > 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 = ""; > }
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 = ""; }
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 <peter.maydell@linaro.org> --- 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(-)