From 9563feeeb5309de1971c4e04419fed6fd31c9cea Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 9 Jun 2009 16:57:09 +1000 Subject: [PATCH] Xi: start checking for invalid mask bits _after_ LASTEVENT. Two issues that combined to false positives and false negatives. - The checking for invalid bits must be performed when there are enough bits that an event outside of LASTEVENT may be selected. - The first invalid bit is LASTEVENT + 1, not LASTEVENT. Signed-off-by: Peter Hutterer --- Xi/xiselectev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c index 6734da991..98b591901 100644 --- a/Xi/xiselectev.c +++ b/Xi/xiselectev.c @@ -108,10 +108,10 @@ ProcXISelectEvent(ClientPtr client) return BadValue; } - if ((evmask->mask_len * 4) > XI_LASTEVENT) + if ((evmask->mask_len * 4) >= (XI_LASTEVENT + 8)/8) { unsigned char *bits = (unsigned char*)&evmask[1]; - for (i = XI_LASTEVENT; i < evmask->mask_len * 4; i++) + for (i = XI_LASTEVENT + 1; i < evmask->mask_len * 4; i++) { if (BitIsOn(bits, i)) return BadValue;