mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-03-24 09:44:28 +00:00
Up the number of button labels atoms to EVDEV_MAXBUTTONS.
Button labels would smash memory if the device had less than 4 buttons and did not advertise a wheel event. In this case the hard-coded wheel button labels would write past the atoms[] boundary. Potential memory smash if a device had a BTN_LEFT and BTN_0, since the latter would map to 8, regardless of the the number of actual buttons (same with BTN_MIDDLE and BTN_1 or BTN_RIGHT and BTN_2). Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
@@ -2066,12 +2066,12 @@ EvdevInitProperty(DeviceIntPtr dev)
|
||||
/* Button labelling */
|
||||
if ((pEvdev->buttons > 0) && (prop_btn_label = XIGetKnownProperty(BTN_LABEL_PROP)))
|
||||
{
|
||||
Atom atom, atoms[pEvdev->buttons];
|
||||
Atom atom, atoms[EVDEV_MAXBUTTONS];
|
||||
int button, bmap;
|
||||
|
||||
/* First, make sure all atoms are initialized */
|
||||
atom = XIGetKnownProperty(BTN_LABEL_PROP_BTN_UNKNOWN);
|
||||
for (button = 0; button < pEvdev->buttons; button++)
|
||||
for (button = 0; button < ArrayLength(atoms); button++)
|
||||
atoms[button] = atom;
|
||||
|
||||
for (button = BTN_MISC; button < BTN_JOYSTICK; button++)
|
||||
|
||||
Reference in New Issue
Block a user