summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Xi/exevents.c18
2 files changed, 23 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 2df72e716..53f837a4d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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) &&