dix: fix crashers with floating device.
dc57f89959 accidentally reversed the
conditions.
in dix/events.c we try to detach floating devices. This leads to a
NULL-dereference on GetMaster()->id.
in dix/getevents.c we try to get the master device for the floating slave
and dereference it.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>This commit is contained in:
		
							parent
							
								
									bfd8422e88
								
							
						
					
					
						commit
						0d140567ba
					
				|  | @ -1421,7 +1421,7 @@ CheckGrabForSyncs(DeviceIntPtr thisDev, Bool thisMode, Bool otherMode) | |||
| static void | ||||
| DetachFromMaster(DeviceIntPtr dev) | ||||
| { | ||||
|     if (!IsFloating(dev)) | ||||
|     if (IsFloating(dev)) | ||||
|         return; | ||||
| 
 | ||||
|     dev->saved_master_id = GetMaster(dev, MASTER_ATTACHED)->id; | ||||
|  |  | |||
|  | @ -864,7 +864,7 @@ positionSprite(DeviceIntPtr dev, int mode, | |||
|      * to the current screen. */ | ||||
|     miPointerSetPosition(dev, mode, screenx, screeny); | ||||
| 
 | ||||
|     if(!IsMaster(dev) || !IsFloating(dev)) { | ||||
|     if(!IsMaster(dev) && !IsFloating(dev)) { | ||||
|         DeviceIntPtr master = GetMaster(dev, MASTER_POINTER); | ||||
|         master->last.valuators[0] = *screenx; | ||||
|         master->last.valuators[1] = *screeny; | ||||
|  | @ -911,7 +911,7 @@ updateHistory(DeviceIntPtr dev, ValuatorMask *mask, CARD32 ms) | |||
|         return; | ||||
| 
 | ||||
|     updateMotionHistory(dev, ms, mask, dev->last.valuators); | ||||
|     if(!IsMaster(dev) || !IsFloating(dev)) | ||||
|     if(!IsMaster(dev) && !IsFloating(dev)) | ||||
|     { | ||||
|         DeviceIntPtr master = GetMaster(dev, MASTER_POINTER); | ||||
|         updateMotionHistory(master, ms, mask, dev->last.valuators); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue