xserver: Branch 'master'

Adam Jackson ajax at kemper.freedesktop.org
Fri Apr 13 14:51:00 UTC 2018


 hw/xwayland/xwayland.c |    3 +++
 1 file changed, 3 insertions(+)

New commits:
commit bf147f67b2b7170fcc5cca07192f6b195dce85e5
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Apr 12 17:24:08 2018 -0400

    xwayland: Don't crash on WarpPointer(dest_w = None)
    
    Turns out that's legal, and xts exercises it, and we crash:
    
        Thread 1 "Xwayland" received signal SIGSEGV, Segmentation fault.
        dixGetPrivate (key=0x813660 <xwl_window_private_key>, privates=0x20) at ../../include/privates.h:122
        122     return (char *) (*privates) + key->offset;
        (gdb) bt
        #0  dixGetPrivate (key=0x813660 <xwl_window_private_key>, privates=0x20) at ../../include/privates.h:122
        #1  dixLookupPrivate (key=0x813660 <xwl_window_private_key>, privates=0x20) at ../../include/privates.h:166
        #2  xwl_window_of_top (window=0x0) at xwayland.c:128
        #3  xwl_cursor_warped_to (device=<optimized out>, screen=0x268b6e0, client=<optimized out>, window=0x0, sprite=0x300bb30,
            x=2400, y=1350) at xwayland.c:292
        #4  0x00000000005622ec in ProcWarpPointer (client=0x32755d0) at events.c:3618
    
    In this case, x/y are the screen-space coordinates where the pointer
    ends up, and we need to look up the (X) window there.
    
    Signed-off-by: Adam Jackson <ajax at redhat.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index e65d8b7e7..dd074c341 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -289,6 +289,9 @@ xwl_cursor_warped_to(DeviceIntPtr device,
     if (!xwl_seat)
         xwl_seat = xwl_screen_get_default_seat(xwl_screen);
 
+    if (!window)
+        window = XYToWindow(sprite, x, y);
+
     xwl_window = xwl_window_of_top(window);
     if (!xwl_window && xwl_seat->focus_window) {
         focus = xwl_seat->focus_window->window;


More information about the xorg-commit mailing list