Xi: return BadImplementation for deviceids 256 and above
The protocol allows for 16 bit device ids, but the implementation doesn't yet. We need to break the input ABI once more to shift the DeviceIntRec's CARD8 to a CARD16, along with some changes in the privates. Once that is done, revert this patch. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
c77f42049f
commit
2b459f44f3
|
@ -74,6 +74,12 @@ int ProcXIChangeCursor(ClientPtr client)
|
|||
REQUEST(xXIChangeCursorReq);
|
||||
REQUEST_SIZE_MATCH(xXIChangeCursorReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixSetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
|
|
@ -238,6 +238,12 @@ ProcXIChangeHierarchy(ClientPtr client)
|
|||
r->return_mode != XIFloating)
|
||||
return BadValue;
|
||||
|
||||
if (r->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = r->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&ptr, r->deviceid, client,
|
||||
DixDestroyAccess);
|
||||
if (rc != Success)
|
||||
|
@ -338,6 +344,12 @@ ProcXIChangeHierarchy(ClientPtr client)
|
|||
newptr,
|
||||
newkeybd;
|
||||
|
||||
if (r->return_pointer > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = r->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&newptr, r->return_pointer,
|
||||
client, DixWriteAccess);
|
||||
if (rc != Success)
|
||||
|
@ -350,6 +362,12 @@ ProcXIChangeHierarchy(ClientPtr client)
|
|||
goto unwind;
|
||||
}
|
||||
|
||||
if (r->return_keyboard > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = r->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&newkeybd, r->return_keyboard,
|
||||
client, DixWriteAccess);
|
||||
if (rc != Success)
|
||||
|
@ -413,6 +431,12 @@ ProcXIChangeHierarchy(ClientPtr client)
|
|||
xXIDetachSlaveInfo* c = (xXIDetachSlaveInfo*)any;
|
||||
DeviceIntPtr *xtstdevice;
|
||||
|
||||
if (c->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = c->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&ptr, c->deviceid, client,
|
||||
DixWriteAccess);
|
||||
if (rc != Success)
|
||||
|
@ -446,6 +470,17 @@ ProcXIChangeHierarchy(ClientPtr client)
|
|||
DeviceIntPtr newmaster;
|
||||
DeviceIntPtr *xtstdevice;
|
||||
|
||||
if (c->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = c->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
if (c->new_master > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = c->new_master;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&ptr, c->deviceid, client,
|
||||
DixWriteAccess);
|
||||
if (rc != Success)
|
||||
|
|
|
@ -70,6 +70,12 @@ ProcXIQueryDevice(ClientPtr client)
|
|||
REQUEST(xXIQueryDeviceReq);
|
||||
REQUEST_SIZE_MATCH(xXIQueryDeviceReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
if (stuff->deviceid != XIAllDevices && stuff->deviceid != XIAllMasterDevices)
|
||||
{
|
||||
rc = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess);
|
||||
|
|
|
@ -81,6 +81,12 @@ ProcXIQueryPointer(ClientPtr client)
|
|||
REQUEST(xXIQueryPointerReq);
|
||||
REQUEST_SIZE_MATCH(xXIQueryPointerReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixReadAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
|
|
@ -69,6 +69,11 @@ ProcXISetClientPointer(ClientPtr client)
|
|||
REQUEST(xXISetClientPointerReq);
|
||||
REQUEST_SIZE_MATCH(xXISetClientPointerReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixWriteAccess);
|
||||
if (rc != Success)
|
||||
|
|
|
@ -76,6 +76,12 @@ ProcXIWarpPointer(ClientPtr client)
|
|||
REQUEST(xXIWarpPointerReq);
|
||||
REQUEST_SIZE_MATCH(xXIWarpPointerReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
/* FIXME: panoramix stuff is missing, look at ProcWarpPointer */
|
||||
|
||||
rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixWriteAccess);
|
||||
|
|
|
@ -65,6 +65,12 @@ ProcXIAllowEvents(ClientPtr client)
|
|||
REQUEST(xXIAllowEventsReq);
|
||||
REQUEST_SIZE_MATCH(xXIAllowEventsReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
|
|
@ -70,6 +70,9 @@ ProcXIGrabDevice(ClientPtr client)
|
|||
REQUEST(xXIGrabDeviceReq);
|
||||
REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
return BadImplementation;
|
||||
|
||||
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGrabAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
@ -129,6 +132,12 @@ ProcXIUngrabDevice(ClientPtr client)
|
|||
|
||||
REQUEST(xXIUngrabDeviceReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
|
|
@ -90,6 +90,9 @@ ProcXIPassiveGrabDevice(ClientPtr client)
|
|||
REQUEST(xXIPassiveGrabDeviceReq);
|
||||
REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
return BadImplementation;
|
||||
|
||||
if (stuff->deviceid == XIAllDevices)
|
||||
dev = inputInfo.all_devices;
|
||||
else if (stuff->deviceid == XIAllMasterDevices)
|
||||
|
@ -260,6 +263,12 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
|
|||
REQUEST(xXIPassiveUngrabDeviceReq);
|
||||
REQUEST_AT_LEAST_SIZE(xXIPassiveUngrabDeviceReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice(&dev, stuff->deviceid, client, DixGrabAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
|
|
@ -1102,6 +1102,12 @@ ProcXIListProperties(ClientPtr client)
|
|||
REQUEST(xXIListPropertiesReq);
|
||||
REQUEST_SIZE_MATCH(xXIListPropertiesReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
rc = dixLookupDevice (&dev, stuff->deviceid, client, DixReadAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
|
@ -1136,6 +1142,12 @@ ProcXIChangeProperty(ClientPtr client)
|
|||
|
||||
REQUEST(xXIChangePropertyReq);
|
||||
REQUEST_AT_LEAST_SIZE(xXIChangePropertyReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
UpdateCurrentTime();
|
||||
|
||||
rc = dixLookupDevice (&dev, stuff->deviceid, client, DixWriteAccess);
|
||||
|
@ -1164,6 +1176,13 @@ ProcXIDeleteProperty(ClientPtr client)
|
|||
REQUEST(xXIDeletePropertyReq);
|
||||
|
||||
REQUEST_SIZE_MATCH(xXIDeletePropertyReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
UpdateCurrentTime();
|
||||
rc = dixLookupDevice (&dev, stuff->deviceid, client, DixWriteAccess);
|
||||
if (rc != Success)
|
||||
|
@ -1192,6 +1211,13 @@ ProcXIGetProperty(ClientPtr client)
|
|||
Atom type;
|
||||
|
||||
REQUEST_SIZE_MATCH(xXIGetPropertyReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
if (stuff->delete)
|
||||
UpdateCurrentTime();
|
||||
rc = dixLookupDevice (&dev, stuff->deviceid, client,
|
||||
|
|
|
@ -82,6 +82,12 @@ ProcXISelectEvent(ClientPtr client)
|
|||
num_masks = stuff->num_masks;
|
||||
while(num_masks--)
|
||||
{
|
||||
if (evmask->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = evmask->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
if (evmask->deviceid != XIAllDevices &&
|
||||
evmask->deviceid != XIAllMasterDevices)
|
||||
rc = dixLookupDevice(&dev, evmask->deviceid, client, DixReadAccess);
|
||||
|
|
|
@ -75,6 +75,12 @@ ProcXISetFocus(ClientPtr client)
|
|||
REQUEST(xXISetFocusReq);
|
||||
REQUEST_AT_LEAST_SIZE(xXISetFocusReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixSetFocusAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
@ -95,6 +101,12 @@ ProcXIGetFocus(ClientPtr client)
|
|||
REQUEST(xXIGetFocusReq);
|
||||
REQUEST_AT_LEAST_SIZE(xXIGetFocusReq);
|
||||
|
||||
if (stuff->deviceid > 0xFF) /* FIXME */
|
||||
{
|
||||
client->errorValue = stuff->deviceid;
|
||||
return BadImplementation;
|
||||
}
|
||||
|
||||
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetFocusAccess);
|
||||
if (ret != Success)
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue
Block a user