diff --git a/libinput-fix-crasher.patch b/libinput-fix-crasher.patch new file mode 100644 index 0000000..126ecb2 --- /dev/null +++ b/libinput-fix-crasher.patch @@ -0,0 +1,71 @@ +From 7b11fef3490277317f4a794beeadf206a48844f6 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Fri, 24 Feb 2017 10:10:44 +1000 +Subject: Fix a crash when requesting invalid mode group indices + +Signed-off-by: Peter Hutterer +Reviewed-by: Hans de Goede +(cherry picked from commit c787ccf270f44007dbadce72c1516b819c2ca5ce) + +diff --git a/src/evdev-tablet-pad-leds.c b/src/evdev-tablet-pad-leds.c +index 209ab73..89b3b9d 100644 +--- a/src/evdev-tablet-pad-leds.c ++++ b/src/evdev-tablet-pad-leds.c +@@ -645,5 +645,9 @@ evdev_device_tablet_pad_get_mode_group(struct evdev_device *device, + if (!(device->seat_caps & EVDEV_DEVICE_TABLET_PAD)) + return NULL; + ++ if (index >= ++ (unsigned int)evdev_device_tablet_pad_get_num_mode_groups(device)) ++ return NULL; ++ + return pad_get_mode_group(pad, index); + } +-- +cgit v0.10.2 + + +From 3940ab7f40a39a045e888068d199871e6d669392 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Fri, 24 Feb 2017 10:15:23 +1000 +Subject: tools: add mode group info to libinput-list-devices + +We don't cater for the special case of groups having a different number of +modes, there is no hardware right now that does that. + +Signed-off-by: Peter Hutterer +Reviewed-by: Hans de Goede +(cherry picked from commit 38c675c9599fabeb8c530ab74898524a71cacf75) + +diff --git a/tools/libinput-list-devices.c b/tools/libinput-list-devices.c +index e202388..8fd25df 100644 +--- a/tools/libinput-list-devices.c ++++ b/tools/libinput-list-devices.c +@@ -245,16 +245,23 @@ rotation_default(struct libinput_device *device) + static void + print_pad_info(struct libinput_device *device) + { +- int nbuttons, nrings, nstrips; ++ int nbuttons, nrings, nstrips, ngroups, nmodes; ++ struct libinput_tablet_pad_mode_group *group; + + nbuttons = libinput_device_tablet_pad_get_num_buttons(device); + nrings = libinput_device_tablet_pad_get_num_rings(device); + nstrips = libinput_device_tablet_pad_get_num_strips(device); ++ ngroups = libinput_device_tablet_pad_get_num_mode_groups(device); ++ ++ group = libinput_device_tablet_pad_get_mode_group(device, 0); ++ nmodes = libinput_tablet_pad_mode_group_get_num_modes(group); + + printf("Pad:\n"); + printf(" Rings: %d\n", nrings); + printf(" Strips: %d\n", nstrips); + printf(" Buttons: %d\n", nbuttons); ++ printf(" Mode groups: %d (%d modes)\n", ngroups, nmodes); ++ + } + + static void +-- +cgit v0.10.2 + diff --git a/libinput.changes b/libinput.changes index c10ed86..6236cd3 100644 --- a/libinput.changes +++ b/libinput.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Mar 1 19:51:34 UTC 2017 - zaitor@opensuse.org + +- Add libinput-fix-crasher.patch: Fix a crash when requesting + invalid mode group indices. + ------------------------------------------------------------------- Tue Feb 21 22:25:16 UTC 2017 - jengelh@inai.de diff --git a/libinput.spec b/libinput.spec index 5d85b01..8101610 100644 --- a/libinput.spec +++ b/libinput.spec @@ -32,6 +32,8 @@ Source: http://freedesktop.org/software/libinput/%name-%version.tar.xz Source2: http://freedesktop.org/software/libinput/%name-%version.tar.xz.sig Source3: baselibs.conf Source4: %name.keyring +# PATCH-FIX-UPSTREAM libinput-fix-crasher.patch zaitor@opensuse.org -- Fix a crash when requesting invalid mode group indices. +Patch: libinput-fix-crasher.patch #git#BuildRequires: autoconf >= 2.64 #git#BuildRequires: automake >= 1.11 #git#BuildRequires: libtool >= 2.2 @@ -98,6 +100,7 @@ to develop applications that require libinput. %prep %setup -qn %name-%version +%patch -p1 %build if [ ! -e configure ]; then