diff --git a/xkb/xkb.c b/xkb/xkb.c index 24062cab03..5a501edb21 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -6748,12 +6748,18 @@ _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev, int ProcXkbSetDeviceInfo(ClientPtr client) { - DeviceIntPtr dev; - int rc; - REQUEST(xkbSetDeviceInfoReq); REQUEST_AT_LEAST_SIZE(xkbSetDeviceInfoReq); + if (client->swapped) { + swaps(&stuff->deviceSpec); + swaps(&stuff->change); + swaps(&stuff->nDeviceLedFBs); + } + + DeviceIntPtr dev; + int rc; + if (!(client->xkbClientFlags & _XkbClientInitialized)) return BadAccess; diff --git a/xkb/xkbSwap.c b/xkb/xkbSwap.c index 589e0956c9..b70172e382 100644 --- a/xkb/xkbSwap.c +++ b/xkb/xkbSwap.c @@ -160,17 +160,6 @@ SProcXkbGetKbdByName(ClientPtr client) return ProcXkbGetKbdByName(client); } -static int _X_COLD -SProcXkbSetDeviceInfo(ClientPtr client) -{ - REQUEST(xkbSetDeviceInfoReq); - REQUEST_AT_LEAST_SIZE(xkbSetDeviceInfoReq); - swaps(&stuff->deviceSpec); - swaps(&stuff->change); - swaps(&stuff->nDeviceLedFBs); - return ProcXkbSetDeviceInfo(client); -} - int _X_COLD SProcXkbDispatch(ClientPtr client) { @@ -225,7 +214,7 @@ SProcXkbDispatch(ClientPtr client) case X_kbGetDeviceInfo: return ProcXkbGetDeviceInfo(client); case X_kbSetDeviceInfo: - return SProcXkbSetDeviceInfo(client); + return ProcXkbSetDeviceInfo(client); case X_kbSetDebuggingFlags: return ProcXkbSetDebuggingFlags(client); default: