summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yincheng Zhao <yinchengzhao@google.com> 2019-10-21 13:35:32 -0700
committer android-build-merger <android-build-merger@google.com> 2019-10-21 13:35:32 -0700
commitac53ebf4ba31dc4a7549dd9dad720508713cb723 (patch)
tree34c2ae3608df9deabe83472f31d6895431b0f503
parent84c6981a8fa7bc2f13c0da1f1c60dd92a8813d54 (diff)
parentdef0631cafbb0c3691183fc97a93c43c84e2d347 (diff)
Merge "Changed regex matching for MCC and MNC" am: 5ffb4ad657
am: def0631caf Change-Id: I8fd5f3afa35072afe418de717a974f8f22fbaf6b
-rw-r--r--telephony/java/android/telephony/CellIdentity.java31
1 files changed, 29 insertions, 2 deletions
diff --git a/telephony/java/android/telephony/CellIdentity.java b/telephony/java/android/telephony/CellIdentity.java
index 258a873c3ac5..432978d1c866 100644
--- a/telephony/java/android/telephony/CellIdentity.java
+++ b/telephony/java/android/telephony/CellIdentity.java
@@ -17,6 +17,7 @@
package android.telephony;
import android.annotation.CallSuper;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
@@ -61,7 +62,7 @@ public abstract class CellIdentity implements Parcelable {
mType = type;
// Only allow INT_MAX if unknown string mcc/mnc
- if (mcc == null || mcc.matches("^[0-9]{3}$")) {
+ if (mcc == null || isMcc(mcc)) {
mMccStr = mcc;
} else if (mcc.isEmpty() || mcc.equals(String.valueOf(Integer.MAX_VALUE))) {
// If the mccStr is empty or unknown, set it as null.
@@ -73,7 +74,7 @@ public abstract class CellIdentity implements Parcelable {
log("invalid MCC format: " + mcc);
}
- if (mnc == null || mnc.matches("^[0-9]{2,3}$")) {
+ if (mnc == null || isMnc(mnc)) {
mMncStr = mnc;
} else if (mnc.isEmpty() || mnc.equals(String.valueOf(Integer.MAX_VALUE))) {
// If the mncStr is empty or unknown, set it as null.
@@ -262,4 +263,30 @@ public abstract class CellIdentity implements Parcelable {
if ((value < rangeMin || value > rangeMax) && value != special) return CellInfo.UNAVAILABLE;
return value;
}
+
+ /** @hide */
+ private static boolean isMcc(@NonNull String mcc) {
+ // ensure no out of bounds indexing
+ if (mcc.length() != 3) return false;
+
+ // Character.isDigit allows all unicode digits, not just [0-9]
+ for (int i = 0; i < 3; i++) {
+ if (mcc.charAt(i) < '0' || mcc.charAt(i) > '9') return false;
+ }
+
+ return true;
+ }
+
+ /** @hide */
+ private static boolean isMnc(@NonNull String mnc) {
+ // ensure no out of bounds indexing
+ if (mnc.length() < 2 || mnc.length() > 3) return false;
+
+ // Character.isDigit allows all unicode digits, not just [0-9]
+ for (int i = 0; i < mnc.length(); i++) {
+ if (mnc.charAt(i) < '0' || mnc.charAt(i) > '9') return false;
+ }
+
+ return true;
+ }
}