layers: don't send configure events in unmap handler

Alternative to 7bf08af which was reverted in the previous commit.

7bf08af fixed the problem that layer-shell clients are terminated when
it's unmapped, by sending configure events in node-destroy handler
rather than in unmap handler. But it caused a UAF bug when an output
with layer-shell clients is destroyed.

So this patch fixes the original issue by simply skipping the surface in
arrange_one_layer() if it's being unmapped.
This commit is contained in:
tokyo4j 2025-06-27 15:10:06 +09:00 committed by Johan Malm
parent cc0fe78ceb
commit 6f70cd0d6e
2 changed files with 19 additions and 0 deletions

View file

@ -14,6 +14,8 @@ struct lab_layer_surface {
struct server *server;
bool mapped;
/* true only inside handle_unmap() */
bool being_unmapped;
struct wl_listener map;
struct wl_listener unmap;