spice-app: avoid crash when core spice module doesn't loaded
When qemu is built with modules, but a given module doesn't load qemu should handle that gracefully. When ui-spice-core.so isn't able to be loaded and qemu is invoked with -display spice-app or -spice, qemu will dereference a null pointer. With this change we check the pointer before dereferencing and error out in a normal way. Signed-off-by: Bruce Rogers <brogers@suse.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20210213032318.346093-1-brogers@suse.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
c0ff29d188
commit
122e4ef6de
@ -129,6 +129,7 @@ static void spice_app_atexit(void)
|
|||||||
static void spice_app_display_early_init(DisplayOptions *opts)
|
static void spice_app_display_early_init(DisplayOptions *opts)
|
||||||
{
|
{
|
||||||
QemuOpts *qopts;
|
QemuOpts *qopts;
|
||||||
|
QemuOptsList *list;
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
if (opts->has_full_screen) {
|
if (opts->has_full_screen) {
|
||||||
@ -159,11 +160,16 @@ static void spice_app_display_early_init(DisplayOptions *opts)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
list = qemu_find_opts("spice");
|
||||||
|
if (list == NULL) {
|
||||||
|
error_report("spice-app missing spice support");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
type_register(&char_vc_type_info);
|
type_register(&char_vc_type_info);
|
||||||
|
|
||||||
sock_path = g_strjoin("", app_dir, "/", "spice.sock", NULL);
|
sock_path = g_strjoin("", app_dir, "/", "spice.sock", NULL);
|
||||||
qopts = qemu_opts_create(qemu_find_opts("spice"), NULL, 0, &error_abort);
|
qopts = qemu_opts_create(list, NULL, 0, &error_abort);
|
||||||
qemu_opt_set(qopts, "disable-ticketing", "on", &error_abort);
|
qemu_opt_set(qopts, "disable-ticketing", "on", &error_abort);
|
||||||
qemu_opt_set(qopts, "unix", "on", &error_abort);
|
qemu_opt_set(qopts, "unix", "on", &error_abort);
|
||||||
qemu_opt_set(qopts, "addr", sock_path, &error_abort);
|
qemu_opt_set(qopts, "addr", sock_path, &error_abort);
|
||||||
|
Loading…
Reference in New Issue
Block a user