[PATCH 3/4] dix: check for grab type before checking XI2 mask
Peter Hutterer
peter.hutterer at who-t.net
Mon Aug 26 18:00:14 PDT 2013
if the grab type isn't XI2, grab->xi2mask is random. That random data may
have the enter/leave mask set, leading to events sent to the client that the
client can't handler.
Source of these errors:
_xgeWireToEvent: Unknown extension 131, this should never happen.
Simplest reproducer:
Start Xephyr, press button inside window, move out. As the pointer leaves
the Xephyr window, the errors appear.
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
dix/events.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dix/events.c b/dix/events.c
index 10351e3..974a2ca 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -4648,7 +4648,7 @@ DeviceEnterLeaveEvent(DeviceIntPtr mouse,
filter = GetEventFilter(mouse, (xEvent *) event);
- if (grab) {
+ if (grab && grab->type == XI2) {
Mask mask;
mask = xi2mask_isset(grab->xi2mask, mouse, type);
--
1.8.2.1
More information about the xorg-devel
mailing list