diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java index 3f5ef4805b8..62b477f602f 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.SimpleClock; 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 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements 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 24d4c470030..82487892e54 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 @@ public class AddAppNetworksFragmentTest { 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);