[PATCH libevdev] Don't bother sanitizing disabled event codes

Peter Hutterer peter.hutterer at who-t.net
Wed Aug 17 00:58:36 UTC 2016


Filter them immediately instead of passing them on and relying on the actual
event handling code to filter them.

Reproducer: if EV_ABS is disabled on an Apple MagicMouse we still get events
passed into sanitize_event(). But the code handling EV_ABS events doesn't
update the state, so we end up complaining about double tracking IDs, even
though that is not actually correct.

https://bugzilla.redhat.com/show_bug.cgi?id=1361325

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 libevdev/libevdev.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index 48b49b1..43a095c 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -979,6 +979,9 @@ sanitize_event(const struct libevdev *dev,
 	       struct input_event *ev,
 	       enum SyncState sync_state)
 {
+	if (!libevdev_has_event_code(dev, ev->type, ev->code))
+		return EVENT_FILTER_DISCARD;
+
 	if (unlikely(dev->num_slots > -1 &&
 		     libevdev_event_is_code(ev, EV_ABS, ABS_MT_SLOT) &&
 		     (ev->value < 0 || ev->value >= dev->num_slots))) {
-- 
2.7.4



More information about the Input-tools mailing list