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

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.

Markus Armbruster <armbru@redhat.com> adds that the segfault can be
reproduced as follows:

  $ qemu-system-xtensa -cpu help

Signed-off-by: Dunrong Huang <riegamaths@gmail.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
This commit is contained in:
Dunrong Huang 2012-07-24 00:42:20 +08:00 committed by Stefan Hajnoczi
parent 3d1d965297
commit fb7c269ed6

10
vl.c
View File

@ -3204,6 +3204,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);
}
@ -3246,11 +3251,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.