libevdev: any value less than 0 has a NULL name
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 15 Jul 2020 03:32:40 +0000 (13:32 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 15 Jul 2020 03:36:18 +0000 (13:36 +1000)
Fixes https://gitlab.freedesktop.org/libevdev/libevdev/-/issues/15

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
libevdev/libevdev.c
test/test-event-names.c

index aefb387f30fc12208a3771a6e83aabdf6ea2518f..c4729b56f04179fd1b06674ef204f19b32aecfd7 100644 (file)
@@ -1742,7 +1742,7 @@ libevdev_event_value_get_name(unsigned int type,
        if (type != EV_ABS || code != ABS_MT_TOOL_TYPE)
                return NULL;
 
-       if (value > MT_TOOL_MAX)
+       if (value < 0 || value > MT_TOOL_MAX)
                return NULL;
 
        return mt_tool_map[value];
index c581b1d38b1a11cc7418021969c5740e0f2fc1fb..480176c4eacb495eaaf0369d39dff25d8d9d54cd 100644 (file)
@@ -227,6 +227,7 @@ START_TEST(test_value_name)
        ck_assert_str_eq(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_PALM), "MT_TOOL_PALM");
        ck_assert_str_eq(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_PEN), "MT_TOOL_PEN");
        ck_assert_str_eq(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_MAX), "MT_TOOL_MAX");
+       ck_assert(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, -1) == NULL);
 }
 END_TEST