summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2015-03-11 12:14:00 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2015-03-19 07:27:05 +1000
commit13edd12f9c28b6be9c0cda3874081da1dd78132a (patch)
treecec4d14d4425db59df0a1d152164e96dec8bd800
parent1c068af8ebe42461095367ce5c6a03cbc8b33e6c (diff)
downloadxf86-input-wacom-13edd12f9c28b6be9c0cda3874081da1dd78132a.tar.gz
Coverity: fix potential negative array subscript
isdv4ParseTouchPacket and usbChooseChannel return -1 on error Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jason Gerecke <killertofu@gmail.com>
-rw-r--r--src/wcmISDV4.c3
-rw-r--r--src/wcmUSB.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/wcmISDV4.c b/src/wcmISDV4.c
index da64598..95001a1 100644
--- a/src/wcmISDV4.c
+++ b/src/wcmISDV4.c
@@ -820,7 +820,8 @@ static int isdv4Parse(InputInfoPtr pInfo, const unsigned char* data, int len)
channel = isdv4ParsePenPacket(pInfo, data, len, ds);
else { /* a touch */
channel = isdv4ParseTouchPacket(pInfo, data, len, ds);
- ds = &common->wcmChannel[channel].work;
+ if (channel >= 0)
+ ds = &common->wcmChannel[channel].work;
}
if (channel < 0)
diff --git a/src/wcmUSB.c b/src/wcmUSB.c
index bac3c66..f0951d4 100644
--- a/src/wcmUSB.c
+++ b/src/wcmUSB.c
@@ -1259,6 +1259,8 @@ static void usbParseAbsMTEvent(WacomCommonPtr common, struct input_event *event)
if (event->value >= 0) {
int serial = event->value + 1;
private->wcmMTChannel = usbChooseChannel(common, TOUCH_ID, serial);
+ if (private->wcmMTChannel < 0)
+ return;
ds = &common->wcmChannel[private->wcmMTChannel].work;
ds->serial_num = serial;
}