Not include user input in regex
Check prefix and remove prefix first, to avoid include user input in
the regex to fix.
Fix: 335136289
Test: manual - on SIMs
Test: unit test
Change-Id: Iff4dcfc3662c744d00b586d05e64b4f5fe33a0d8
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index 56381e2..9277417 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -75,8 +75,9 @@
static final String SUB_ID = "sub_id";
@VisibleForTesting
static final String KEY_UNIQUE_SUBSCRIPTION_DISPLAYNAME = "unique_subscription_displayName";
- private static final String REGEX_DISPLAY_NAME_PREFIXES = "^";
- private static final String REGEX_DISPLAY_NAME_SUFFIXES = "\\s[0-9]+";
+ private static final String REGEX_DISPLAY_NAME_SUFFIX = "\\s[0-9]+";
+ private static final Pattern REGEX_DISPLAY_NAME_SUFFIX_PATTERN =
+ Pattern.compile(REGEX_DISPLAY_NAME_SUFFIX);
private static List<SubscriptionInfo> sAvailableResultsForTesting;
private static List<SubscriptionInfo> sActiveResultsForTesting;
@@ -460,12 +461,12 @@
@VisibleForTesting
static boolean isValidCachedDisplayName(String cachedDisplayName, String originalName) {
- if (TextUtils.isEmpty(cachedDisplayName) || TextUtils.isEmpty(originalName)) {
+ if (TextUtils.isEmpty(cachedDisplayName) || TextUtils.isEmpty(originalName)
+ || !cachedDisplayName.startsWith(originalName)) {
return false;
}
- String regex = REGEX_DISPLAY_NAME_PREFIXES + originalName + REGEX_DISPLAY_NAME_SUFFIXES;
- Pattern pattern = Pattern.compile(regex);
- Matcher matcher = pattern.matcher(cachedDisplayName);
+ String displayNameSuffix = cachedDisplayName.substring(originalName.length());
+ Matcher matcher = REGEX_DISPLAY_NAME_SUFFIX_PATTERN.matcher(displayNameSuffix);
return matcher.matches();
}
diff --git a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
index 6df281a..46c281f 100644
--- a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
+++ b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
@@ -636,6 +636,14 @@
}
@Test
+ public void isValidCachedDisplayName_withBrackets_noCrash() {
+ String originalName = "originalName(";
+ String cacheString = "originalName( 1234";
+
+ assertThat(SubscriptionUtil.isValidCachedDisplayName(cacheString, originalName)).isTrue();
+ }
+
+ @Test
public void isConnectedToWifi_hasWiFi_returnTrue() {
addNetworkTransportType(NetworkCapabilities.TRANSPORT_WIFI);