From b7e6a905805f4191dd7610c0850792b9bad9fa9b Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 3 Feb 2026 12:08:51 +0100 Subject: [PATCH] Xi: fix byte-swapping in SProcXIPassiveGrabDevice() Yet another old Xorg bug: the even masks are transmitted as CARD32's, so they also need to be byte-swapped. Signed-off-by: Enrico Weigelt, metux IT consult --- Xi/xipassivegrab.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c index b726bdf7b3..86d1e2a12b 100644 --- a/Xi/xipassivegrab.c +++ b/Xi/xipassivegrab.c @@ -68,9 +68,7 @@ ProcXIPassiveGrabDevice(ClientPtr client) ((uint32_t) stuff->mask_len + stuff->num_modifiers) *4); if (client->swapped) { - uint32_t *mods = (uint32_t *) &stuff[1] + stuff->mask_len; - for (int i = 0; i < stuff->num_modifiers; i++, mods++) - swapl(mods); + SwapLongs((CARD32*)&stuff[1], stuff->num_modifiers + stuff->mask_len); } DeviceIntPtr dev, mod_dev;