diff options
author | 2018-12-21 23:25:07 +0100 | |
---|---|---|
committer | 2019-01-28 16:14:35 +0100 | |
commit | 7c27d73b02a1958f323a7c30f46c99414cd6f6bf (patch) | |
tree | 44b7f0cd093a14c776ad4781d41cdc36f5e64efd /sway/desktop/xdg_shell_v6.c | |
parent | Introduce container_is_scratchpad_hidden (diff) | |
download | sway-7c27d73b02a1958f323a7c30f46c99414cd6f6bf.tar.gz sway-7c27d73b02a1958f323a7c30f46c99414cd6f6bf.tar.zst sway-7c27d73b02a1958f323a7c30f46c99414cd6f6bf.zip |
Check xdg_surface's role before using its toplevel
Don't access xdg_surface->toplevel if xdg_surface->role is equal to
WLR_XDG_SURFACE_ROLE_NONE, since this could lead to crash. The same
checks are added for xdg_surface_v6.
Fixes #3311
Diffstat (limited to 'sway/desktop/xdg_shell_v6.c')
-rw-r--r-- | sway/desktop/xdg_shell_v6.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c index a7ea163f..3eed54ab 100644 --- a/sway/desktop/xdg_shell_v6.c +++ b/sway/desktop/xdg_shell_v6.c | |||
@@ -213,7 +213,7 @@ static bool is_transient_for(struct sway_view *child, | |||
213 | return false; | 213 | return false; |
214 | } | 214 | } |
215 | struct wlr_xdg_surface_v6 *surface = child->wlr_xdg_surface_v6; | 215 | struct wlr_xdg_surface_v6 *surface = child->wlr_xdg_surface_v6; |
216 | while (surface) { | 216 | while (surface && surface->role == WLR_XDG_SURFACE_V6_ROLE_TOPLEVEL) { |
217 | if (surface->toplevel->parent == ancestor->wlr_xdg_surface_v6) { | 217 | if (surface->toplevel->parent == ancestor->wlr_xdg_surface_v6) { |
218 | return true; | 218 | return true; |
219 | } | 219 | } |