diff options
| author | 2012-10-04 13:40:08 -0700 | |
|---|---|---|
| committer | 2012-10-04 13:40:08 -0700 | |
| commit | e72fe16146dd33cb218bf8c16b069f68f331fdf8 (patch) | |
| tree | 1fc422742eaca00e3ae01f790bc188e6d480a012 /location/java/android | |
| parent | 57e6203457cedbc6f4bf8a45635862a3eb717e9f (diff) | |
Prevent overflow in LocationRequest.setExpireIn()
Prevent overflow in LocationRequest.setExpireIn(), for example,
when we pass in Long.MAX_VALUE.
Bug: 7047435
Change-Id: Ie56928a59fb387173fbd3887c0ef9aede00f8152
Diffstat (limited to 'location/java/android')
| -rw-r--r-- | location/java/android/location/LocationRequest.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/location/java/android/location/LocationRequest.java b/location/java/android/location/LocationRequest.java index f4f7b09f0864..cb291eadf5b8 100644 --- a/location/java/android/location/LocationRequest.java +++ b/location/java/android/location/LocationRequest.java @@ -369,7 +369,15 @@ public final class LocationRequest implements Parcelable { * @return the same object, so that setters can be chained */ public LocationRequest setExpireIn(long millis) { - mExpireAt = millis + SystemClock.elapsedRealtime(); + long elapsedRealtime = SystemClock.elapsedRealtime(); + + // Check for > Long.MAX_VALUE overflow (elapsedRealtime > 0): + if (millis > Long.MAX_VALUE - elapsedRealtime) { + mExpireAt = Long.MAX_VALUE; + } else { + mExpireAt = millis + elapsedRealtime; + } + if (mExpireAt < 0) mExpireAt = 0; return this; } |