xserver/hw/xwayland
Olivier Fourdan cdd0352ba0 xwayland: Fix a segfault with pointer locking
Xwayland would crash in some circumstances while trying to issue a
pointer locking when the cursor is hidden when there is no seat focus
window set.

The crash signature looks like:

 #0  zwp_pointer_constraints_v1_lock_pointer ()
 #1  xwl_pointer_warp_emulator_lock () at xwayland-input.c:2584
 #2  xwl_seat_maybe_lock_on_hidden_cursor () at xwayland-input.c:2756
 #3  xwl_seat_maybe_lock_on_hidden_cursor () at xwayland-input.c:2765
 #4  xwl_seat_cursor_visibility_changed () at xwayland-input.c:2768
 #5  xwl_set_cursor () at xwayland-cursor.c:245
 #6  miPointerUpdateSprite () at mipointer.c:468
 #7  miPointerDisplayCursor () at mipointer.c:206
 #8  CursorDisplayCursor () at cursor.c:150
 #9  AnimCurDisplayCursor () at animcur.c:220
 #10 ChangeToCursor () at events.c:936
 #11 ActivatePointerGrab () at events.c:1542
 #12 GrabDevice () at events.c:5120
 #13 ProcGrabPointer () at events.c:4908
 #14 Dispatch () at dispatch.c:478
 #15 dix_main () at main.c:276

xwl_pointer_warp_emulator_lock() tries to use the surface from the
xwl_seat->focus_window leading to a NULL pointer dereference when that
value is NULL.

Check that xwl_seat->focus_window is not NULL earlier in the stack in
xwl_seat_maybe_lock_on_hidden_cursor() and return early if not the case
to avoid the crash.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=102474
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-09-05 11:35:40 +10:00
..
.gitignore xwayland: Bind pointer constraints global 2016-10-05 13:50:46 -04:00
Makefile.am xwayland: Add grab protocol support 2017-08-01 10:56:42 +01:00
drm.xml wayland: Sync drm.xml with Mesa 2017-07-05 10:13:04 -04:00
meson.build meson: Fix xwayland build since xwayland-keyboard-grab. 2017-08-02 09:39:04 +01:00
xwayland-cursor.c xwayland: update cursor on tablet tools in proximity 2017-04-28 11:21:25 +10:00
xwayland-cvt.c xwayland: Add hack for FWXGA resolution #99574 2017-02-08 12:32:16 -05:00
xwayland-glamor-xv.c xwayland: Fix compiler warning in GLAMOR Xv 2016-04-15 16:22:16 -04:00
xwayland-glamor.c glamor: Drop glamor_set_screen_pixmap(). 2017-06-02 17:46:46 -07:00
xwayland-input.c xwayland: Fix a segfault with pointer locking 2017-09-05 11:35:40 +10:00
xwayland-output.c xwayland: Update root window size when desktop size changes 2017-06-07 14:45:34 +10:00
xwayland-shm.c xserver: Check the right HAVE_*_CONFIG_H. 2017-03-23 13:17:39 -04:00
xwayland-vidmode.c xwayland: Pretend we support viewport in vidmode 2016-03-28 14:10:59 -04:00
xwayland.c xwayland: Add grab protocol support 2017-08-01 10:56:42 +01:00
xwayland.h xwayland: Add grab protocol support 2017-08-01 10:56:42 +01:00