dix: When pairing, only check for access right if client is set.

If the pairing client is not set, then the pairing is initiated internally
(e.g. when a new keyboard device is configured). In this case we _must_ pair
regardless of who is the pairing client.
This commit is contained in:
Peter Hutterer 2007-10-05 12:19:03 +09:30
parent ab88cb8d2e
commit ff2351246d

View File

@ -2184,6 +2184,9 @@ ProcQueryKeymap(ClientPtr client)
/* Pair the keyboard to the pointer device. Keyboard events will follow the
* pointer sprite.
* If the client is set, the request to pair comes from some client. In this
* case, we need to check for access. If the client is NULL, it's from an
* internal automatic pairing, we must always permit this.
*/
int
PairDevices(ClientPtr client, DeviceIntPtr ptr, DeviceIntPtr kbd)
@ -2193,7 +2196,7 @@ PairDevices(ClientPtr client, DeviceIntPtr ptr, DeviceIntPtr kbd)
if (!pairingClient)
RegisterPairingClient(client);
else if (pairingClient != client)
else if (client && pairingClient != client)
return BadAccess;
if (kbd->spriteInfo->spriteOwner)