diff options
-rw-r--r-- | dix/devices.c | 1 | ||||
-rw-r--r-- | dix/getevents.c | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/dix/devices.c b/dix/devices.c index a680ed8d7..8b9f5dd93 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -1279,6 +1279,7 @@ InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom *labels, BUG_RETURN_VAL(dev == NULL, FALSE); BUG_RETURN_VAL(dev->button != NULL, FALSE); + BUG_RETURN_VAL(numButtons >= MAX_BUTTONS, FALSE); butc = calloc(1, sizeof(ButtonClassRec)); if (!butc) diff --git a/dix/getevents.c b/dix/getevents.c index 14b65cabc..23f9c33f5 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -1654,6 +1654,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, } #endif + BUG_RETURN_VAL(buttons >= MAX_BUTTONS, 0); + /* refuse events from disabled devices */ if (!pDev->enabled) return 0; |