diff --git a/xkb/xkb.c b/xkb/xkb.c index aa01cd06dd..55544138f0 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -5324,12 +5324,23 @@ _XkbSetGeometry(ClientPtr client, DeviceIntPtr dev, xkbSetGeometryReq * stuff) int ProcXkbSetGeometry(ClientPtr client) { - DeviceIntPtr dev; - int rc; - REQUEST(xkbSetGeometryReq); REQUEST_AT_LEAST_SIZE(xkbSetGeometryReq); + if (client->swapped) { + swaps(&stuff->deviceSpec); + swapl(&stuff->name); + swaps(&stuff->widthMM); + swaps(&stuff->heightMM); + swaps(&stuff->nProperties); + swaps(&stuff->nColors); + swaps(&stuff->nDoodads); + swaps(&stuff->nKeyAliases); + } + + DeviceIntPtr dev; + int rc; + if (!(client->xkbClientFlags & _XkbClientInitialized)) return BadAccess; diff --git a/xkb/xkbSwap.c b/xkb/xkbSwap.c index c63c44df33..d0c21e9d05 100644 --- a/xkb/xkbSwap.c +++ b/xkb/xkbSwap.c @@ -338,22 +338,6 @@ SProcXkbGetGeometry(ClientPtr client) return ProcXkbGetGeometry(client); } -static int _X_COLD -SProcXkbSetGeometry(ClientPtr client) -{ - REQUEST(xkbSetGeometryReq); - REQUEST_AT_LEAST_SIZE(xkbSetGeometryReq); - swaps(&stuff->deviceSpec); - swapl(&stuff->name); - swaps(&stuff->widthMM); - swaps(&stuff->heightMM); - swaps(&stuff->nProperties); - swaps(&stuff->nColors); - swaps(&stuff->nDoodads); - swaps(&stuff->nKeyAliases); - return ProcXkbSetGeometry(client); -} - static int _X_COLD SProcXkbPerClientFlags(ClientPtr client) { @@ -469,7 +453,7 @@ SProcXkbDispatch(ClientPtr client) case X_kbGetGeometry: return SProcXkbGetGeometry(client); case X_kbSetGeometry: - return SProcXkbSetGeometry(client); + return ProcXkbSetGeometry(client); case X_kbPerClientFlags: return SProcXkbPerClientFlags(client); case X_kbListComponents: