ChangeLog | 30 ++++++++++++++++++++++++++++++ debian/changelog | 8 ++++++++ src/synaptics.c | 2 ++ 3 files changed, 40 insertions(+)
New commits: commit b050c11c2ff7e9e46e790cd4748aeb9a9e5aa865 Author: Julien Cristau <[email protected]> Date: Mon Oct 1 21:55:11 2012 +0200 Upload to unstable diff --git a/ChangeLog b/ChangeLog index 1c01053..eaef7c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,33 @@ +commit eae444eb1a85d2401501d29f9a6c654c046f806b +Author: Peter Hutterer <[email protected]> +Date: Thu Aug 30 16:38:38 2012 +1000 + + Reset num_active_touches on DeviceOff (#52496) + + When disabling the device, reset num_active_touches to zero. Otherwise, + num_active_touches stays at the value it was on DeviceOff(). Future touches + add to that value until the index may go past priv->open_slots[]. + That causes spurious memory corruption on touch ends. + + And as of 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e we ignore pre-existing + touches anyway. + + Test-case: + - place num_touches fingers on the touchpad + - xinput disable <device> + - lift fingers + - xinput enable <device> + - place finger on device, num_active_touches is now (num_touches + 1) + + X.Org Bug 52496 <http://bugs.freedesktop.org/show_bug.cgi?id=52496> + + Signed-off-by: Peter Hutterer <[email protected]> + Reviewed-by: Chase Douglas <[email protected]> + (cherry picked from commit a245d42f53096b1ae81e6702729f97ca508e5b5b) + + Conflicts: + src/synaptics.c + commit d5ff9d8b0b186cf39695df84a10984eac559b746 Author: Peter Hutterer <[email protected]> Date: Tue Jun 12 13:46:34 2012 +1000 diff --git a/debian/changelog b/debian/changelog index 9801715..614c3e4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +xserver-xorg-input-synaptics (1.6.2-2) unstable; urgency=low + + * Pull latest synaptics-1.6-branch: + - Reset num_active_touches on DeviceOff (closes: #681796). Fixes memory + corruption leading to crashes. + + -- Julien Cristau <[email protected]> Mon, 01 Oct 2012 21:55:06 +0200 + xserver-xorg-input-synaptics (1.6.2-1) unstable; urgency=low * New upstream release, from the 1.6 branch. commit eae444eb1a85d2401501d29f9a6c654c046f806b Author: Peter Hutterer <[email protected]> Date: Thu Aug 30 16:38:38 2012 +1000 Reset num_active_touches on DeviceOff (#52496) When disabling the device, reset num_active_touches to zero. Otherwise, num_active_touches stays at the value it was on DeviceOff(). Future touches add to that value until the index may go past priv->open_slots[]. That causes spurious memory corruption on touch ends. And as of 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e we ignore pre-existing touches anyway. Test-case: - place num_touches fingers on the touchpad - xinput disable <device> - lift fingers - xinput enable <device> - place finger on device, num_active_touches is now (num_touches + 1) X.Org Bug 52496 <http://bugs.freedesktop.org/show_bug.cgi?id=52496> Signed-off-by: Peter Hutterer <[email protected]> Reviewed-by: Chase Douglas <[email protected]> (cherry picked from commit a245d42f53096b1ae81e6702729f97ca508e5b5b) Conflicts: src/synaptics.c diff --git a/src/synaptics.c b/src/synaptics.c index cd9f936..a28e984 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -1154,6 +1154,7 @@ SynapticsReset(SynapticsPrivate * priv) priv->prev_z = 0; priv->prevFingers = 0; #ifdef HAVE_MULTITOUCH + priv->num_active_touches = 0; memset(priv->open_slots, 0, priv->num_slots * sizeof(int)); #endif } @@ -3118,6 +3119,7 @@ UpdateTouchState(InputInfoPtr pInfo, struct SynapticsHwState *hw) if (hw->slot_state[i] == SLOTSTATE_OPEN) { priv->open_slots[priv->num_active_touches] = i; priv->num_active_touches++; + BUG_WARN(priv->num_active_touches > priv->num_slots); } else if (hw->slot_state[i] == SLOTSTATE_CLOSE) { Bool found = FALSE; -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

