dix: don't allow disabling XTest devices
Disabling a XTest device followed by an XTest API call crashes the server. This could be fixed elsewhere but disabled devices must not send events anyway. The use-case for disabled XTest devices is somewhat limited, so simply disallow disabling the devices. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
5b7384a315
commit
aad65415bf
|
@ -187,7 +187,10 @@ ProcXChangeDeviceControl(ClientPtr client)
|
||||||
case DEVICE_ENABLE:
|
case DEVICE_ENABLE:
|
||||||
e = (xDeviceEnableCtl *) &stuff[1];
|
e = (xDeviceEnableCtl *) &stuff[1];
|
||||||
|
|
||||||
status = ChangeDeviceControl(client, dev, (xDeviceCtl *) e);
|
if (IsXTestDevice(dev, NULL))
|
||||||
|
status = !Success;
|
||||||
|
else
|
||||||
|
status = ChangeDeviceControl(client, dev, (xDeviceCtl *) e);
|
||||||
|
|
||||||
if (status == Success) {
|
if (status == Success) {
|
||||||
if (e->enable)
|
if (e->enable)
|
||||||
|
|
|
@ -145,9 +145,11 @@ DeviceSetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
|
||||||
if (prop->format != 8 || prop->type != XA_INTEGER || prop->size != 1)
|
if (prop->format != 8 || prop->type != XA_INTEGER || prop->size != 1)
|
||||||
return BadValue;
|
return BadValue;
|
||||||
|
|
||||||
/* Don't allow disabling of VCP/VCK */
|
/* Don't allow disabling of VCP/VCK or XTest devices */
|
||||||
if ((dev == inputInfo.pointer ||dev ==
|
if ((dev == inputInfo.pointer ||
|
||||||
inputInfo.keyboard) &&!(*(CARD8 *) prop->data))
|
dev == inputInfo.keyboard ||
|
||||||
|
IsXTestDevice(dev, NULL))
|
||||||
|
&&!(*(CARD8 *) prop->data))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
if (!checkonly) {
|
if (!checkonly) {
|
||||||
|
|
Loading…
Reference in New Issue