ui/win32: fix potential use-after-free with dbus shared memory
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Tue, 8 Oct 2024 12:50:13 +0000 (16:50 +0400)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 14 Oct 2024 13:34:09 +0000 (17:34 +0400)
commit330ef31deb2e5461cff907488b710f5bd9cd2327
treef614213dc0627187b5677f90a0dd553309ce09c3
parent244d52ff736fefc3dd364ed091720aa896af306d
ui/win32: fix potential use-after-free with dbus shared memory

DisplaySurface may be free before the pixman image is freed, since the
image is refcounted and used by different objects, including pending
dbus messages.

Furthermore, setting the destroy function in
create_displaysurface_from() isn't appropriate, as it may not be used,
and may be overriden as in ramfb.

Set the destroy function when the shared handle is set, use the HANDLE
directly for destroy data, using a single common helper
qemu_pixman_win32_image_destroy().

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-ID: <20241008125028.1177932-5-marcandre.lureau@redhat.com>
hw/display/virtio-gpu.c
include/ui/qemu-pixman.h
ui/console.c
ui/qemu-pixman.c