All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ui/console: fix use-after-free in qemu_console_set_cursor
@ 2026-08-27  7:06 marcandre.lureau
  2026-08-27  8:47 ` Daniel P. Berrangé
  0 siblings, 1 reply; 6+ messages in thread
From: marcandre.lureau @ 2026-08-27  7:06 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

When the new cursor is the same object as the one already held by
the console and the refcount is 1, cursor_unref frees it before
cursor_ref can increment the count.

Ref the incoming cursor before unreffing the old one so the
refcount goes 1-2-1 instead of 1-0 (freed) then use-after-free.

This is related to 385ac97f8fad ("ui: keep current cursor with
QemuConsole"), but could have happened earlier with VNC too.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 ui/console.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/ui/console.c b/ui/console.c
index a8a2a247d8f4..4db8f1cb431f 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -904,8 +904,9 @@ void qemu_console_set_cursor(QemuConsole *c, QEMUCursor *cursor)
     DisplayState *s = c->ds;
     DisplayChangeListener *dcl;
 
+    cursor_ref(cursor);
     cursor_unref(con->cursor);
-    con->cursor = cursor_ref(cursor);
+    con->cursor = cursor;
     QLIST_FOREACH(dcl, &s->listeners, next) {
         if (c != dcl->con) {
             continue;
-- 
2.55.0.543.g5ebe2ebe4ea8



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-08-29  5:15 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-27  7:06 [PATCH] ui/console: fix use-after-free in qemu_console_set_cursor marcandre.lureau
2026-08-27  8:47 ` Daniel P. Berrangé
2026-08-27  9:58   ` Marc-André Lureau
2026-08-27 10:30     ` Daniel P. Berrangé
2026-08-27 10:36       ` Marc-André Lureau
2026-08-29  5:14         ` Akihiko Odaki

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.