tablet: check libevdev_get_abs_info() return value
authorJosé Expósito <jose.exposito89@gmail.com>
Mon, 12 Sep 2022 16:28:38 +0000 (18:28 +0200)
committerJosé Expósito <jose.exposito89@gmail.com>
Sun, 18 Sep 2022 14:00:26 +0000 (16:00 +0200)
Commit b5f0536a4f93 ("quirks: add a quirk for the Wacom 524c device")
added the quirk "AttrEventCodeDisable=ABS_TILT_X;ABS_TILT_Y;" to the
Wacom 524c.

When using the pen in a display with tilt support, the tilt X/Y axes
are set as changed. Using the pen again, but this time in the display
without tilt support, will try to get the tilt information, crashing.

Check the return value of libevdev_get_abs_info() to avoid this crash.

Fix https://gitlab.freedesktop.org/libinput/libinput/-/issues/805
Fixes: b5f0536a4f93 ("quirks: add a quirk for the Wacom 524c device")
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
src/evdev-tablet.c

index 62c23b8..6094bd5 100644 (file)
@@ -567,6 +567,10 @@ tablet_update_tilt(struct tablet_dispatch *tablet,
 {
        const struct input_absinfo *absinfo;
 
+       if (!libevdev_has_event_code(device->evdev, EV_ABS, ABS_TILT_X) ||
+           !libevdev_has_event_code(device->evdev, EV_ABS, ABS_TILT_Y))
+               return;
+
        /* mouse rotation resets tilt to 0 so always fetch both axes if
         * either has changed */
        if (bit_is_set(tablet->changed_axes,