xserver: Branch 'master'

Peter Hutterer whot at kemper.freedesktop.org
Tue Jul 21 22:28:04 PDT 2009


 dix/events.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

New commits:
commit ecd618957ebf01cb4137f98efec3faed35f8a9f5
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Jul 22 15:19:34 2009 +1000

    dix: fix null-pointer dereference on activating enter/focus grabs.
    
    EventToXI2 returns a NULL event for enter/focus events since these events
    aren't yet wrapped into internal events. This is a quickfix only, it works
    thanks to the alignment of internal and XI2 event types.
    
    Eventually, enter/leave events should be wrapped into internal events.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index 7505463..f50229a 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3474,7 +3474,16 @@ CheckPassiveGrabsOnWindow(
                     continue;
                 }
                 count = 1;
-                mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8];
+
+                /* FIXME: EventToXI2 returns NULL for enter events, so
+                 * dereferencing the event is bad. Internal event types are
+                 * aligned with core events, so the else clause is valid.
+                 * long-term we should use internal events for enter/focus
+                 * as well */
+                if (xE)
+                    mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8];
+                else if (event->type == XI_Enter || event->type == XI_FocusIn)
+                    mask = grab->xi2mask[device->id][event->type/8];
             } else
             {
                 rc = EventToXI((InternalEvent*)event, &xE, &count);


More information about the xorg-commit mailing list