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
Block a user