summaryrefslogtreecommitdiff
path: root/libevdev/libevdev.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-06-05 11:22:35 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-06-26 17:47:28 +1000
commitdc27c627a7ca7759b3cc917e2fa76dc83dcbc5bf (patch)
tree95757cf1d1408b67cda7bafd3dc5f27a3849f142 /libevdev/libevdev.c
parent645d5d3a645cf2c3ec1813b13dd5a3144ee8f912 (diff)
downloadlibevdev-dc27c627a7ca7759b3cc917e2fa76dc83dcbc5bf.tar.gz
Fix type_to_mask to return -1
EV_SYN doesn't have a max, so 0 is not enough. returning 0 on failure is a bad idea, as mask is unset.
Diffstat (limited to 'libevdev/libevdev.c')
-rw-r--r--libevdev/libevdev.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index 3d5bbf6..362e0ff 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -611,7 +611,7 @@ int
libevdev_has_event_code(const struct libevdev *dev, unsigned int type, unsigned int code)
{
const unsigned long *mask;
- unsigned int max;
+ int max;
if (!libevdev_has_event_type(dev, type))
return 0;
@@ -621,7 +621,7 @@ libevdev_has_event_code(const struct libevdev *dev, unsigned int type, unsigned
max = type_to_mask_const(dev, type, &mask);
- if (code > max)
+ if (max == -1 || code > max)
return 0;
return bit_is_set(mask, code);
@@ -840,7 +840,7 @@ libevdev_kernel_enable_event_code(struct libevdev *dev, unsigned int type, unsig
return rc;
max = type_to_mask_const(dev, type, &mask);
- if (code > max)
+ if (max == -1 || code > max)
return -EINVAL;
switch(type) {