Description of problem:
An evdev device with more than 36 axes overruns internal array boundaries. This can currently only happen with absolute devices since the kernel does not provide for > 36 relative axes.
Version-Release number of selected component (if applicable):
Plug in a device with more than 36 absolute axes (uinput may be used).
EvdevAddAbsClass will overwrite memory when resetting pEvdev->vals. There's no visible output because the structs overwritten are internal to evdev. Verification by inspection or with gdb.
Example uinput device to reproduce this behaviour is here:
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux major release. Product Management has requested further
review of this request by Red Hat Engineering, for potential inclusion in a Red
Hat Enterprise Linux Major release. This request is not yet committed for
xorg-x11-drv-evdev-2.3.2-7.el6 is available in brew.
using in comment #0 mentioned test device w/ 63 axes I can see warning in /var/log/Xorg.0.log:
(II) XINPUT: Adding extended input device "allaxes test device" (type: TOUCHPAD)
(WW) allaxes test device: found 63 axes, limiting to 36.
(WW) Device 'allaxes test device' has 36 axes, only using first 36.
which is correct behaviour
Red Hat Enterprise Linux 6.0 is now available and should resolve
the problem described in this bug report. This report is therefore being closed
with a resolution of CURRENTRELEASE. You may reopen this bug report if the
solution does not work for you.