diff options
author | Daniel Stone <daniel@fooishbar.org> | 2006-04-09 17:15:51 +0000 |
---|---|---|
committer | Daniel Stone <daniel@fooishbar.org> | 2006-04-09 17:15:51 +0000 |
commit | d5bc41b88272b4a3a1841cc1189720b0549db215 (patch) | |
tree | 49feb9727040782f462d042c54c75f90db926793 | |
parent | 2387bfa5ff5ed82f3f732fb9152c1ea95850a914 (diff) |
Coverity #323, #445, #446, #447: Fix potential NULL dereferences.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Xi/exevents.c | 18 |
2 files changed, 23 insertions, 0 deletions
@@ -1,3 +1,8 @@ +2006-04-09 Daniel Stone <daniel@freedesktop.org> + + * Xi/exevents.c: + Coverity #323, #445, #446, #447: Fix potential NULL dereferences. + 2006-04-07 Aaron Plattner <aplattner@nvidia.com> * hw/xfree86/common/xf86Module.h: diff --git a/Xi/exevents.c b/Xi/exevents.c index 4f1f30967..2932ab2d2 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -175,6 +175,9 @@ ProcessOtherEvent(xEventPtr xE, register DeviceIntPtr other, int count) } if (xE->u.u.type == DeviceKeyPress) { + if (!k) + return; + modifiers = k->modifierMap[key]; kptr = &k->down[key >> 3]; if (*kptr & bit) { /* allow ddx to generate multiple downs */ @@ -204,6 +207,9 @@ ProcessOtherEvent(xEventPtr xE, register DeviceIntPtr other, int count) return; } } else if (xE->u.u.type == DeviceKeyRelease) { + if (!k) + return; + kptr = &k->down[key >> 3]; if (!(*kptr & bit)) /* guard against duplicates */ return; @@ -226,6 +232,9 @@ ProcessOtherEvent(xEventPtr xE, register DeviceIntPtr other, int count) if (other->fromPassiveGrab && (key == other->activatingKey)) deactivateDeviceGrab = TRUE; } else if (xE->u.u.type == DeviceButtonPress) { + if (!b) + return; + kptr = &b->down[key >> 3]; *kptr |= bit; if (other->valuator) @@ -243,6 +252,9 @@ ProcessOtherEvent(xEventPtr xE, register DeviceIntPtr other, int count) return; } else if (xE->u.u.type == DeviceButtonRelease) { + if (!b) + return; + kptr = &b->down[key >> 3]; *kptr &= ~bit; if (other->valuator) @@ -1073,6 +1085,9 @@ MaybeSendDeviceMotionNotifyHint(deviceKeyButtonPointer * pEvents, Mask mask) DeviceIntPtr dev; dev = LookupDeviceIntRec(pEvents->deviceid & DEVICE_BITS); + if (!dev) + return 0; + if (pEvents->type == DeviceMotionNotify) { if (mask & DevicePointerMotionHintMask) { if (WID(dev->valuator->motionHintWindow) == pEvents->event) { @@ -1094,6 +1109,9 @@ CheckDeviceGrabAndHintWindow(WindowPtr pWin, int type, DeviceIntPtr dev; dev = LookupDeviceIntRec(xE->deviceid & DEVICE_BITS); + if (!dev) + return; + if (type == DeviceMotionNotify) dev->valuator->motionHintWindow = pWin; else if ((type == DeviceButtonPress) && (!grab) && |