aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfionaxu <fionaxu@google.com>2016-06-21 20:52:03 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-06-21 20:52:03 +0000
commita88ccfbb38921ec73a0902c2a022ab7e67136e53 (patch)
tree225ab2ba3370ee596a62e4c45e8a8760ef3e17db
parent3549133e530fce516a7b812009bfd3e9cd360448 (diff)
parent2e7bd47d740ad8762ab397167b07dc049fab4788 (diff)
downloadtelephony-a88ccfbb38921ec73a0902c2a022ab7e67136e53.tar.gz
backport security fix: avoid set NITZ time to 2038 am: 6c2365a258 am: 4c10b30d95
am: 2e7bd47d74 Change-Id: Iaa0e689a681ba4edb3f46b774c85010808cfc043
-rw-r--r--src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java6
-rw-r--r--src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java6
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 87c53dc9d9..19c66cd091 100644
--- a/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
@@ -97,6 +97,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 boolean mCdmaRoaming = false;
private int mRoamingIndicator;
@@ -1421,6 +1423,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 ffa7308fbb..349ea16440 100644
--- a/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -133,6 +133,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;
@@ -1583,6 +1585,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!