diff options
author | fionaxu <fionaxu@google.com> | 2016-06-21 21:03:13 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-06-21 21:03:13 +0000 |
commit | bc102e54b6636eea5919e86bf70d00b60618fc21 (patch) | |
tree | 856934054e32ba9f8858905db3f58aa9bf3640a9 | |
parent | 86391365a957b4c8a3836be5ab9915a2b093e390 (diff) | |
parent | 188595cac7c728443a91227d079c46ccf3f0d04d (diff) | |
download | telephony-bc102e54b6636eea5919e86bf70d00b60618fc21.tar.gz |
backport security fix: avoid set NITZ time to 2038 am: 6c2365a258 am: 4c10b30d95 am: 2e7bd47d74 am: a88ccfbb38 am: 7425e8ae34 am: 2f5f0f89b5
am: 188595cac7
Change-Id: I0eff305eeef80cd98764092908d3ce34241b88de
-rw-r--r-- | src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java | 6 | ||||
-rwxr-xr-x | src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index d0361656e4..1f9f2ef161 100644 --- a/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -101,6 +101,8 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { private static final int NITZ_UPDATE_DIFF_DEFAULT = 2000; private int mNitzUpdateDiff = SystemProperties.getInt("ro.nitz_update_diff", NITZ_UPDATE_DIFF_DEFAULT); + /** Time stamp after 19 January 2038 is not supported under 32 bit */ + private static final int MAX_NITZ_YEAR = 2037; private int mRoamingIndicator; private boolean mIsInPrl; @@ -1607,6 +1609,10 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { String[] nitzSubs = nitz.split("[/:,+-]"); int year = 2000 + Integer.parseInt(nitzSubs[0]); + if (year > MAX_NITZ_YEAR) { + if (DBG) loge("NITZ year: " + year + " exceeds limit, skip NITZ time update"); + return; + } c.set(Calendar.YEAR, year); // month is 0 based! diff --git a/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index 133e628820..5e6bde796a 100755 --- a/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -136,6 +136,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker { /** Boolean is true is setTimeFromNITZString was called */ private boolean mNitzUpdatedTime = false; + /** Time stamp after 19 January 2038 is not supported under 32 bit */ + private static final int MAX_NITZ_YEAR = 2037; String mSavedTimeZone; long mSavedTime; @@ -1733,6 +1735,10 @@ final class GsmServiceStateTracker extends ServiceStateTracker { String[] nitzSubs = nitz.split("[/:,+-]"); int year = 2000 + Integer.parseInt(nitzSubs[0]); + if (year > MAX_NITZ_YEAR) { + if (DBG) loge("NITZ year: " + year + " exceeds limit, skip NITZ time update"); + return; + } c.set(Calendar.YEAR, year); // month is 0 based! |