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).
diff --git a/services/java/com/android/server/HardwareService.java b/services/java/com/android/server/HardwareService.java
index 7597f85..6ac72e0 100755
--- a/services/java/com/android/server/HardwareService.java
+++ b/services/java/com/android/server/HardwareService.java
@@ -141,8 +141,11 @@
                 != 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;