From 0f5b50dfa721a544fa33a6d2714a9c70a0fb2037 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 3 Apr 2016 02:14:53 -0400 Subject: [PATCH] Fix integer overflow in deadzone calculation --- src/input/evdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/input/evdev.c b/src/input/evdev.c index ea3ea7a..9e42a5c 100644 --- a/src/input/evdev.c +++ b/src/input/evdev.c @@ -106,9 +106,9 @@ static short evdev_convert_value(struct input_event *ev, struct input_device *de else if (ev->value < parms->min) return reverse?SHRT_MAX:SHRT_MIN; else if (reverse) - return (parms->max - (ev->valueavg?parms->flat*2:0) - ev->value) * (SHRT_MAX-SHRT_MIN) / (parms->max-parms->min-parms->flat*2) + SHRT_MIN; + return (long long)(parms->max - (ev->valueavg?parms->flat*2:0) - ev->value) * (SHRT_MAX-SHRT_MIN) / (parms->max-parms->min-parms->flat*2) + SHRT_MIN; else - return (ev->value - (ev->value>parms->avg?parms->flat*2:0) - parms->min) * (SHRT_MAX-SHRT_MIN) / (parms->max-parms->min-parms->flat*2) + SHRT_MIN; + return (long long)(ev->value - (ev->value>parms->avg?parms->flat*2:0) - parms->min) * (SHRT_MAX-SHRT_MIN) / (parms->max-parms->min-parms->flat*2) + SHRT_MIN; } static char evdev_convert_value_byte(struct input_event *ev, struct input_device *dev, struct input_abs_parms *parms) {