summarylogtreecommitdiffstats
path: root/bad-impl.patch
blob: 57a8658936456996be24a8e28ab7730d8e7153a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--- xorg-server.orig/Xi/xiselectev.c	2012-05-17 19:09:01.000000000 +0200
+++ xorg-server/Xi/xiselectev.c	2012-12-18 10:29:38.804469850 +0100
@@ -175,17 +175,24 @@
                 if (inputMasks)
                     iclient = inputMasks->inputClients;
                 for (; iclient; iclient = iclient->next) {
-                    DeviceIntPtr dummy;
+                    DeviceIntPtr devTest;
+                    DeviceIntRec dummyTest;
 
                     if (CLIENT_ID(iclient->resource) == client->index)
                         continue;
 
-                    dixLookupDevice(&dummy, evmask->deviceid, serverClient,
+                    if (evmask->deviceid == XIAllDevices ||
+                        evmask->deviceid == XIAllMasterDevices) {
+                        dummyTest.id = evmask->deviceid;
+                        devTest = &dummyTest;
+                    }
+                    else
+                        dixLookupDevice(&devTest, evmask->deviceid, serverClient,
                                     DixReadAccess);
-                    if (!dummy)
+                    if (!devTest)
                         return BadImplementation;       /* this shouldn't happen */
 
-                    if (xi2mask_isset(iclient->xi2mask, dummy, XI_TouchBegin))
+                    if (xi2mask_isset(iclient->xi2mask, devTest, XI_TouchBegin))
                         return BadAccess;
                 }
             }