Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24f10760 authored by Patrick Scott's avatar Patrick Scott
Browse files

Check for a timeout <= 0 before adding the vibration.

A timeout of 0 could cause the vibration thread to run with a null pattern and
crash the system server. Instead, we should just ignore vibrations that don't
make any sense (similar to ignoring a bad pattern vibration).
parent 220dec28
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -141,8 +141,11 @@ public class HardwareService extends IHardwareService.Stub {
                != PackageManager.PERMISSION_GRANTED) {
            throw new SecurityException("Requires VIBRATE permission");
        }
        if (mCurrentVibration != null
                && mCurrentVibration.hasLongerTimeout(milliseconds)) {
        // We're running in the system server so we cannot crash. Check for a
        // timeout of 0 or negative. This will ensure that a vibration has
        // either a timeout of > 0 or a non-null pattern.
        if (milliseconds <= 0 || (mCurrentVibration != null
                && mCurrentVibration.hasLongerTimeout(milliseconds))) {
            // Ignore this vibration since the current vibration will play for
            // longer than milliseconds.
            return;