diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c index aefb387..c4729b5 100644 --- a/libevdev/libevdev.c +++ b/libevdev/libevdev.c @@ -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]; diff --git a/test/test-event-names.c b/test/test-event-names.c index c581b1d..480176c 100644 --- a/test/test-event-names.c +++ b/test/test-event-names.c @@ -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