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:
		
							parent
							
								
									ab88cb8d2e
								
							
						
					
					
						commit
						ff2351246d
					
				| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue