Ignore CRLF strings in display SSIDs to avoid display errors
- Keep user-entered SSIDs in Wi-Fi Configuration
- Ignore CRLF strings in display SSIDs only
Bug: 224545390
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=AddAppNetworksFragmentTest
Change-Id: Ifc081f9c5c02b2d70412f296688b88e44e893add
diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
index 3f5ef48..62b477f 100644
--- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
+++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java
@@ -39,6 +39,7 @@
import android.os.SystemClock;
import android.provider.Settings;
import android.text.TextUtils;
+import android.util.EventLog;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -518,7 +519,13 @@
UiConfigurationItem(String displayedSsid, WifiNetworkSuggestion wifiNetworkSuggestion,
int index, int level) {
- mDisplayedSsid = displayedSsid;
+ if (displayedSsid.contains("\n") || displayedSsid.contains("\r")) {
+ mDisplayedSsid = displayedSsid.replaceAll("\\r|\\n", "");
+ Log.e(TAG, "Ignore CRLF strings in display SSIDs to avoid display errors!");
+ EventLog.writeEvent(0x534e4554, "224545390", -1 /* UID */, "CRLF injection");
+ } else {
+ mDisplayedSsid = displayedSsid;
+ }
mWifiNetworkSuggestion = wifiNetworkSuggestion;
mIndex = index;
mLevel = level;
diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
index 24d4c47..8248789 100644
--- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
@@ -455,6 +455,36 @@
AddAppNetworksFragment.MESSAGE_SHOW_SAVE_FAILED)).isTrue();
}
+ @Test
+ public void uiConfigurationItem_putCrToDisplayedSsid_shouldRemoveCr() {
+ String testSsid = "\r" + FAKE_NEW_WPA_SSID + "\r";
+
+ AddAppNetworksFragment.UiConfigurationItem item =
+ new AddAppNetworksFragment.UiConfigurationItem(testSsid, null, 0, 0);
+
+ assertThat(item.mDisplayedSsid).isEqualTo(FAKE_NEW_WPA_SSID);
+ }
+
+ @Test
+ public void uiConfigurationItem_putLfToDisplayedSsid_shouldRemoveLf() {
+ String testSsid = "\n" + FAKE_NEW_WPA_SSID + "\n";
+
+ AddAppNetworksFragment.UiConfigurationItem item =
+ new AddAppNetworksFragment.UiConfigurationItem(testSsid, null, 0, 0);
+
+ assertThat(item.mDisplayedSsid).isEqualTo(FAKE_NEW_WPA_SSID);
+ }
+
+ @Test
+ public void uiConfigurationItem_putCrLfToDisplayedSsid_shouldRemoveCrLf() {
+ String testSsid = "\r\n" + FAKE_NEW_WPA_SSID + "\r\n";
+
+ AddAppNetworksFragment.UiConfigurationItem item =
+ new AddAppNetworksFragment.UiConfigurationItem(testSsid, null, 0, 0);
+
+ assertThat(item.mDisplayedSsid).isEqualTo(FAKE_NEW_WPA_SSID);
+ }
+
private void setUpOneScannedNetworkWithScanedLevel4() {
final ArrayList list = new ArrayList<>();
list.add(mWifiEntry);