cursor: unset wlr_output_cursor.texture on surface destroy

When the surface is destroyed, its current wlr_texture is about to
get destroyed as well. Reset wlr_output_cursor.texture to prevent
use-after-free.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3652
This commit is contained in:
Simon Ser 2023-06-01 17:36:28 +02:00 committed by Alexander Orzechowski
parent 9c9e3f6263
commit 6668c822b3

View file

@ -424,6 +424,7 @@ static void output_cursor_output_handle_surface_destroy(
struct wlr_cursor_output_cursor *output_cursor = struct wlr_cursor_output_cursor *output_cursor =
wl_container_of(listener, output_cursor, surface_destroy); wl_container_of(listener, output_cursor, surface_destroy);
assert(output_cursor->surface != NULL); assert(output_cursor->surface != NULL);
wlr_output_cursor_set_buffer(output_cursor->output_cursor, NULL, 0, 0);
cursor_output_cursor_reset_image(output_cursor); cursor_output_cursor_reset_image(output_cursor);
} }