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