Patchwork vl.c: Exit QEMU early if no machine is found

login
register
mail settings
Submitter dunrong huang
Date July 23, 2012, 4:42 p.m.
Message ID <1343061740-14870-1-git-send-email-riegamaths@gmail.com>
Download mbox | patch
Permalink /patch/172712/
State New
Headers show

Comments

dunrong huang - July 23, 2012, 4:42 p.m.
From: Dunrong Huang <riegamaths@gmail.com>

We check whether the variable machine is NULL or not before accessing
it. If machine is NULL, exit QEMU with an error, this can avoids a
segfault error.

Signed-off-by: Dunrong Huang <riegamaths@gmail.com>
---
 vl.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
Markus Armbruster - Aug. 9, 2012, 8 a.m.
riegamaths@gmail.com writes:

> From: Dunrong Huang <riegamaths@gmail.com>
>
> We check whether the variable machine is NULL or not before accessing
> it. If machine is NULL, exit QEMU with an error, this can avoids a
> segfault error.
>
> Signed-off-by: Dunrong Huang <riegamaths@gmail.com>

Commit message lacks detail on how to reproduce the SEGV.  This does the
trick:

    $ qemu-system-xtensa -cpu help

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Stefan Hajnoczi - Aug. 9, 2012, 8:19 a.m.
On Tue, Jul 24, 2012 at 12:42:20AM +0800, riegamaths@gmail.com wrote:
> From: Dunrong Huang <riegamaths@gmail.com>
> 
> We check whether the variable machine is NULL or not before accessing
> it. If machine is NULL, exit QEMU with an error, this can avoids a
> segfault error.
> 
> Signed-off-by: Dunrong Huang <riegamaths@gmail.com>
> ---
>  vl.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)

Thanks, applied to the trivial patches tree:
https://github.com/stefanha/qemu/commits/trivial-patches

Stefan

Patch

diff --git a/vl.c b/vl.c
index 8904db1..0d145dc 100644
--- a/vl.c
+++ b/vl.c
@@ -3205,6 +3205,11 @@  int main(int argc, char **argv, char **envp)
     }
     loc_set_none();
 
+    if (machine == NULL) {
+        fprintf(stderr, "No machine found.\n");
+        exit(1);
+    }
+
     if (machine->hw_version) {
         qemu_set_version(machine->hw_version);
     }
@@ -3247,11 +3252,6 @@  int main(int argc, char **argv, char **envp)
         data_dir = CONFIG_QEMU_DATADIR;
     }
 
-    if (machine == NULL) {
-        fprintf(stderr, "No machine found.\n");
-        exit(1);
-    }
-
     /*
      * Default to max_cpus = smp_cpus, in case the user doesn't
      * specify a max_cpus value.