desktop-shell: NULL check whether a popup parent is a shell surface

get_shell_surface(parent) may return NULL if the client passed a
unassigned wl_surface or a wl_surface with a non-shell surface role
(such as cursor role).

https://bugs.freedesktop.org/show_bug.cgi?id=92316

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Tested-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
dev
Jonas Ådahl 9 years ago committed by Derek Foreman
parent 3f607d3e1c
commit bc5d849c9d
  1. 5
      desktop-shell/shell.c

@ -4279,8 +4279,9 @@ xdg_get_xdg_popup(struct wl_client *client,
* top level or not. */
parent_shsurf = get_shell_surface(parent);
if (!shell_surface_is_xdg_popup(parent_shsurf) &&
!shell_surface_is_xdg_surface(parent_shsurf)) {
if (!parent_shsurf ||
(!shell_surface_is_xdg_popup(parent_shsurf) &&
!shell_surface_is_xdg_surface(parent_shsurf))) {
wl_resource_post_error(resource,
XDG_SHELL_ERROR_INVALID_POPUP_PARENT,
"xdg_popup parent was invalid");

Loading…
Cancel
Save