From a85d210b34506cb39e7f08d81d4586fe4448b47f Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 11 Jun 2009 12:32:39 +1000 Subject: [PATCH] Xi: store mask_len before swapping in ProcXIGetSelectedEvents. Swapping the mask_len and then advancing the pointer by the swapped length is just a bad idea. Signed-off-by: Peter Hutterer --- Xi/xiselectev.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c index f2c6b9a04..1259de596 100644 --- a/Xi/xiselectev.c +++ b/Xi/xiselectev.c @@ -224,10 +224,9 @@ ProcXIGetSelectedEvents(ClientPtr client) { if (devmask[j] != 0) { + int mask_len = (j + 4)/4; /* j is an index, hence + 4, not + 3 */ evmask->deviceid = i; - evmask->mask_len = (j + 4)/4; /* j is an index, hence + 4, - not + 3 */ - + evmask->mask_len = mask_len; reply.num_masks++; reply.length += sizeof(xXIEventMask)/4 + evmask->mask_len; @@ -239,7 +238,7 @@ ProcXIGetSelectedEvents(ClientPtr client) memcpy(&evmask[1], devmask, j + 1); evmask = (xXIEventMask*)((char*)evmask + - sizeof(xXIEventMask) + evmask->mask_len * 4); + sizeof(xXIEventMask) + mask_len * 4); break; } }