From 237c1c82bb0e487609a2e3e03bf33f9713cd24e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Wed, 28 Aug 2013 23:16:20 -0700 Subject: [PATCH] shell: Make sure we have seat->pointer and seat->touch before dereferencing Either of these may not be available when we handle wl_shell_surface.move, and we need to not crash when that's the case. https://bugs.freedesktop.org/show_bug.cgi?id=68649 --- src/shell.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/shell.c b/src/shell.c index c3dc34793..0efdd1d6d 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1227,13 +1227,15 @@ shell_surface_move(struct wl_client *client, struct wl_resource *resource, struct shell_surface *shsurf = wl_resource_get_user_data(resource); struct weston_surface *surface; - surface = weston_surface_get_main_surface(seat->pointer->focus); - if (seat->pointer->button_count > 0 && seat->pointer->grab_serial == serial) { + if (seat->pointer && + seat->pointer->button_count > 0 && + seat->pointer->grab_serial == serial) { surface = weston_surface_get_main_surface(seat->pointer->focus); if ((surface == shsurf->surface) && (surface_move(shsurf, seat) < 0)) wl_resource_post_no_memory(resource); - } else if (seat->touch->grab_serial == serial) { + } else if (seat->touch && + seat->touch->grab_serial == serial) { surface = weston_surface_get_main_surface(seat->touch->focus); if ((surface == shsurf->surface) && (surface_touch_move(shsurf, seat) < 0))