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>
This commit is contained in:
parent
3f607d3e1c
commit
bc5d849c9d
@ -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…
x
Reference in New Issue
Block a user