diff options
author | Maksim Davydov <davydov-max@yandex-team.ru> | 2022-08-25 19:52:47 +0300 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2022-09-29 14:38:05 +0400 |
commit | fc0c128531ed55f058bfbad4f1348ebd9a0187f2 (patch) | |
tree | 95223697bf9321195928c7e9d59b9c5f52392dcf /chardev/wctablet.c | |
parent | 769a726ccb9a8ab9b2a05bca648c79b3f80ab8de (diff) | |
download | qemu-fc0c128531ed55f058bfbad4f1348ebd9a0187f2.zip qemu-fc0c128531ed55f058bfbad4f1348ebd9a0187f2.tar.gz qemu-fc0c128531ed55f058bfbad4f1348ebd9a0187f2.tar.bz2 |
chardev: fix segfault in finalize
If finalize chardev-msmouse or chardev-wctable is called immediately after
init it cases QEMU to crash with segfault. This happens because of
QTAILQ_REMOVE in qemu_input_handler_unregister tries to dereference
NULL pointer.
For instance, this error can be reproduced via `qom-list-properties`
command.
Signed-off-by: Maksim Davydov <davydov-max@yandex-team.ru>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Message-Id: <20220825165247.33704-1-davydov-max@yandex-team.ru>
Diffstat (limited to 'chardev/wctablet.c')
-rw-r--r-- | chardev/wctablet.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/chardev/wctablet.c b/chardev/wctablet.c index e8b292c..43bdf6b 100644 --- a/chardev/wctablet.c +++ b/chardev/wctablet.c @@ -319,7 +319,9 @@ static void wctablet_chr_finalize(Object *obj) { TabletChardev *tablet = WCTABLET_CHARDEV(obj); - qemu_input_handler_unregister(tablet->hs); + if (tablet->hs) { + qemu_input_handler_unregister(tablet->hs); + } } static void wctablet_chr_open(Chardev *chr, |