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 <peter.hutterer@who-t.net>
This commit is contained in:
parent
5043f42f36
commit
a85d210b34
|
@ -224,10 +224,9 @@ ProcXIGetSelectedEvents(ClientPtr client)
|
||||||
{
|
{
|
||||||
if (devmask[j] != 0)
|
if (devmask[j] != 0)
|
||||||
{
|
{
|
||||||
|
int mask_len = (j + 4)/4; /* j is an index, hence + 4, not + 3 */
|
||||||
evmask->deviceid = i;
|
evmask->deviceid = i;
|
||||||
evmask->mask_len = (j + 4)/4; /* j is an index, hence + 4,
|
evmask->mask_len = mask_len;
|
||||||
not + 3 */
|
|
||||||
|
|
||||||
reply.num_masks++;
|
reply.num_masks++;
|
||||||
reply.length += sizeof(xXIEventMask)/4 + evmask->mask_len;
|
reply.length += sizeof(xXIEventMask)/4 + evmask->mask_len;
|
||||||
|
|
||||||
|
@ -239,7 +238,7 @@ ProcXIGetSelectedEvents(ClientPtr client)
|
||||||
|
|
||||||
memcpy(&evmask[1], devmask, j + 1);
|
memcpy(&evmask[1], devmask, j + 1);
|
||||||
evmask = (xXIEventMask*)((char*)evmask +
|
evmask = (xXIEventMask*)((char*)evmask +
|
||||||
sizeof(xXIEventMask) + evmask->mask_len * 4);
|
sizeof(xXIEventMask) + mask_len * 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user