diff options
author | Michal Suchanek <hramrach@gmail.com> | 2012-05-23 11:22:05 +0200 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-06-04 11:28:44 +1000 |
commit | 88c767edb01ed7efb19ffe3a453e16107b27130b (patch) | |
tree | c0e4474dfa44ae9333417cbb22f74cc7d60602c7 | |
parent | 594b4a4f0601066d09e49a84c5af8c2eb6f07240 (diff) |
Fix crash for motion events from devices without valuators
A WarpPointer request may trigger a motion event on a device without
valuators. That request is ignored by GetPointerEvents but during smooth
scroll emulation we dereference dev->valuators to get the number of axes.
Break out early if the device doesn't have valuators.
Signed-off-by: Michal Suchanek <hramrach@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | dix/getevents.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/dix/getevents.c b/dix/getevents.c index ae4112ffc..4fbaa6c94 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -1615,7 +1615,7 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, /* Now turn the smooth-scrolling axes back into emulated button presses * for legacy clients, based on the integer delta between before and now */ for (i = 0; i < valuator_mask_size(&mask); i++) { - if (i >= pDev->valuator->numAxes) + if ( !pDev->valuator || (i >= pDev->valuator->numAxes)) break; if (!valuator_mask_isset(&mask, i)) |