You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.9 KiB
63 lines
2.9 KiB
1 month ago
|
From 9e58f195620d723a2a0b609aa1c59d4938551835 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
|
||
|
Date: Tue, 20 Aug 2024 17:11:12 +0400
|
||
|
Subject: [PATCH 25/38] vnc: fix crash when no console attached
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
RH-Author: Marc-André Lureau <marcandre.lureau@redhat.com>
|
||
|
RH-MergeRequest: 279: vnc: fix crash when no console attached
|
||
|
RH-Jira: RHEL-50529
|
||
|
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||
|
RH-Commit: [1/1] 0ea2135d95786752fe50c00271be997144adb4bc (marcandre.lureau-rh/qemu-kvm-centos)
|
||
|
|
||
|
JIRA: https://issues.redhat.com/browse/RHEL-50529
|
||
|
|
||
|
Since commit e99441a3793b5 ("ui/curses: Do not use console_select()")
|
||
|
qemu_text_console_put_keysym() no longer checks for NULL console
|
||
|
argument, which leads to a later crash:
|
||
|
|
||
|
Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
|
||
|
0x00005555559ee186 in qemu_text_console_handle_keysym (s=0x0, keysym=31) at ../ui/console-vc.c:332
|
||
|
332 } else if (s->echo && (keysym == '\r' || keysym == '\n')) {
|
||
|
(gdb) bt
|
||
|
#0 0x00005555559ee186 in qemu_text_console_handle_keysym (s=0x0, keysym=31) at ../ui/console-vc.c:332
|
||
|
#1 0x00005555559e18e5 in qemu_text_console_put_keysym (s=<optimized out>, keysym=<optimized out>) at ../ui/console.c:303
|
||
|
#2 0x00005555559f2e88 in do_key_event (vs=vs@entry=0x5555579045c0, down=down@entry=1, keycode=keycode@entry=60, sym=sym@entry=65471) at ../ui/vnc.c:2034
|
||
|
#3 0x00005555559f845c in ext_key_event (vs=0x5555579045c0, down=1, sym=65471, keycode=<optimized out>) at ../ui/vnc.c:2070
|
||
|
#4 protocol_client_msg (vs=0x5555579045c0, data=<optimized out>, len=<optimized out>) at ../ui/vnc.c:2514
|
||
|
#5 0x00005555559f515c in vnc_client_read (vs=0x5555579045c0) at ../ui/vnc.c:1607
|
||
|
|
||
|
Fixes: e99441a3793b5 ("ui/curses: Do not use console_select()")
|
||
|
Fixes: https://issues.redhat.com/browse/RHEL-50529
|
||
|
Cc: qemu-stable@nongnu.org
|
||
|
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
||
|
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
|
||
|
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
|
||
|
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
|
||
|
|
||
|
(cherry picked from commit 0e60fc80938d9ce84274a36ddfaaa640bdef2be8)
|
||
|
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
||
|
---
|
||
|
ui/vnc.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/ui/vnc.c b/ui/vnc.c
|
||
|
index dae5d51210..5057ec8680 100644
|
||
|
--- a/ui/vnc.c
|
||
|
+++ b/ui/vnc.c
|
||
|
@@ -1935,7 +1935,7 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
|
||
|
}
|
||
|
|
||
|
qkbd_state_key_event(vs->vd->kbd, qcode, down);
|
||
|
- if (!qemu_console_is_graphic(vs->vd->dcl.con)) {
|
||
|
+ if (QEMU_IS_TEXT_CONSOLE(vs->vd->dcl.con)) {
|
||
|
QemuTextConsole *con = QEMU_TEXT_CONSOLE(vs->vd->dcl.con);
|
||
|
bool numlock = qkbd_state_modifier_get(vs->vd->kbd, QKBD_MOD_NUMLOCK);
|
||
|
bool control = qkbd_state_modifier_get(vs->vd->kbd, QKBD_MOD_CTRL);
|
||
|
--
|
||
|
2.39.3
|
||
|
|