From 11eb10fbf1e3e3f0f5678603eb94b3cab1ed259b 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 | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c index 2eb8820aa9..254b6e2784 100644 --- a/Xi/xipassivegrab.c +++ b/Xi/xipassivegrab.c @@ -49,9 +49,6 @@ int _X_COLD SProcXIPassiveGrabDevice(ClientPtr client) { - int i; - uint32_t *mods; - REQUEST(xXIPassiveGrabDeviceReq); REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq); @@ -65,11 +62,8 @@ SProcXIPassiveGrabDevice(ClientPtr client) REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq, ((uint32_t) stuff->mask_len + stuff->num_modifiers) *4); - mods = (uint32_t *) &stuff[1] + stuff->mask_len; - for (i = 0; i < stuff->num_modifiers; i++, mods++) { - swapl(mods); - } + SwapLongs((CARD32*)&stuff[1], stuff->num_modifiers + stuff->mask_len); return ProcXIPassiveGrabDevice(client); }