From df5ca5560962d051460174fb87259621310329b7 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 17 Aug 2016 10:48:43 +1000 Subject: [PATCH] Don't bother sanitizing disabled event codes 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 Reviewed-by: Benjamin Tissoires --- 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))) {