diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2015-03-11 12:14:00 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2015-03-19 07:27:05 +1000 |
commit | 13edd12f9c28b6be9c0cda3874081da1dd78132a (patch) | |
tree | cec4d14d4425db59df0a1d152164e96dec8bd800 | |
parent | 1c068af8ebe42461095367ce5c6a03cbc8b33e6c (diff) | |
download | xf86-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.c | 3 | ||||
-rw-r--r-- | src/wcmUSB.c | 2 |
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; } |