diff options
author | Xin Li <delphij@google.com> | 2021-06-21 05:49:09 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-06-21 05:49:09 +0000 |
commit | b6727a8d6435d2e566c302c0ab33f5057f7a9013 (patch) | |
tree | f621e99f822953e06f9424865254a143ccf5712b | |
parent | b9dbbb282693d99c290adfa2214ebd9ddec8de49 (diff) | |
parent | f23cb8bc6243374fe27db6146cb4019de2ed0d2a (diff) | |
download | CertInstaller-b6727a8d6435d2e566c302c0ab33f5057f7a9013.tar.gz |
Merge "DO NOT MERGE - Merge RQ3A.210605.005"
-rw-r--r-- | res/values-es/strings.xml | 2 | ||||
-rw-r--r-- | res/values-fr-rCA/strings.xml | 2 | ||||
-rw-r--r-- | res/values-mk/strings.xml | 6 | ||||
-rw-r--r-- | res/values-ne/strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/certinstaller/WiFiInstaller.java | 76 |
5 files changed, 59 insertions, 29 deletions
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index d0f20e8..dd95ee2 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -74,7 +74,7 @@ <string name="wifi_cancel_label" msgid="1328748037608392134">"Cancelar"</string> <string name="wifi_dismiss_label" msgid="1916684434873972698">"Cerrar"</string> <string name="wifi_no_config" msgid="1835743123288916755">"Ninguna"</string> - <string name="wifi_config_text" msgid="8259587306773310314">"Nombre: %1$s\nFQDN: %2$s\nConsorcios de roaming: %3$s\nDominio: %4$s\nMétodo de autenticación: EAP-%5$s\n"</string> + <string name="wifi_config_text" msgid="8259587306773310314">"Nombre: %1$s\nFQDN: %2$s\nConsorcios de itinerancia: %3$s\nDominio: %4$s\nMétodo de autenticación: EAP-%5$s\n"</string> <string name="wifi_ttls_config_text" msgid="2002413183253872168">"Nombre de usuario: %s\n"</string> <string name="wifi_tls_config_text" msgid="9062328536640168510">"Certificado de cliente:\n%1$s\nClave: %2$s\n"</string> <string name="wifi_sim_config_text" msgid="1666019954520831840">"SIM: %s\n"</string> diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 257159e..d2710cf 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -35,7 +35,7 @@ <string name="password_empty_error" msgid="591713406761723025">"Veuillez saisir le mot de passe."</string> <string name="name_empty_error" msgid="3808800768660110354">"Veuillez saisir un nom."</string> <string name="name_char_error" msgid="3176618568784938968">"Veuillez saisir un nom ne contenant que des lettres et des chiffres."</string> - <string name="unable_to_save_cert" msgid="9178604087335389686">"Impossible d\'enregistrer le certificat. Le stockage des authentifiants n\'est pas activé, ou il n\'est pas initialisé correctement."</string> + <string name="unable_to_save_cert" msgid="9178604087335389686">"Impossible d\'enregistrer le certificat. Le stockage des identifiants n\'est pas activé, ou il n\'est pas initialisé correctement."</string> <string name="cert_not_saved" msgid="4037698479662830270">"Le certificat n\'est pas installé."</string> <string name="no_cert_to_saved" msgid="5708884372817309068">"Aucun certificat à installer."</string> <string name="invalid_cert" msgid="7704228670980743590">"Le certificat est incorrect."</string> diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index f85e403..afab15d 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -30,7 +30,7 @@ <string name="userkey_type" msgid="6214833257030657106">"Алгоритам:"</string> <string name="one_usercrt" msgid="7690798336332403106">"еден сертификат на корисник"</string> <string name="one_cacrt" msgid="2667950425420663146">"еден CA сертификат"</string> - <string name="n_cacrts" msgid="2141498640685639208">"%d CA-сертификати"</string> + <string name="n_cacrts" msgid="2141498640685639208">"%d CA сертификати"</string> <string name="password_error" msgid="2042471639556516356">"Внеси ја точната лозинка."</string> <string name="password_empty_error" msgid="591713406761723025">"Внеси ја лозинката."</string> <string name="name_empty_error" msgid="3808800768660110354">"Напиши име."</string> @@ -49,10 +49,10 @@ <string name="invalid_certificate_close_button" msgid="350986774973653102">"Затвори"</string> <string name="invalid_certificate_message" msgid="3508065546083182733">"Датотекава не може да се користи како <xliff:g id="CERTIFICATE_USAGE">%1$s</xliff:g>"</string> <string name="certificate" msgid="8790577925509962529">"Сертификат"</string> - <string name="ca_certificate" msgid="7397198551290322945">"CA-сертификат"</string> + <string name="ca_certificate" msgid="7397198551290322945">"Сертификат CA"</string> <string name="user_certificate" msgid="514888069820553128">"Кориснички сертификат за VPN и апликации"</string> <string name="wifi_certificate" msgid="5356595832360140989">"Сертификат за Wi‑Fi"</string> - <string name="ca_cert_is_added" msgid="2847081843756291802">"Инсталиран е CA-сертификат"</string> + <string name="ca_cert_is_added" msgid="2847081843756291802">"Сертификат CA е инсталиран"</string> <string name="user_cert_is_added" msgid="3088794616560630823">"Корисничкиот сертификат е инсталиран"</string> <string name="wifi_cert_is_added" msgid="333220613655140428">"Сертификатот за Wi‑Fi е инсталиран"</string> <string name="cert_too_large_error" msgid="8715414972725646285">"Не може да се инсталира зашто сертификатот е преголем."</string> diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index c650668..ce01324 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -59,7 +59,7 @@ <string name="cert_missing_error" msgid="7040527352278728220">"स्थापना गर्न सकेन किनभने प्रमाणपत्र फाइल पत्ता लगाउन सकिएन।"</string> <string name="cert_read_error" msgid="7353463360652419796">"स्थापना गर्न सकिएन किनभने प्रमाणपत्र फाइल पढ्न सकेन।"</string> <string name="cert_temp_error" msgid="617276803992714550">"अस्थायी विफलता। कृपया पछि फेरि प्रयास गर्नुहोस्।"</string> - <string name="only_primary_user_allowed" msgid="4005084935023047716">"यो उपकरणको मालिकले मात्र सर्टिफिकेट इन्स्टल गर्न सक्छ।"</string> + <string name="only_primary_user_allowed" msgid="4005084935023047716">"यो उपकरणको मालिकले मात्र प्रमाणपत्रहरू स्थापना गर्न सक्छ।"</string> <string name="credential_usage_label" msgid="1513892208033156805">"प्रमाणपत्रको प्रयोग:"</string> <string-array name="credential_usage"> <item msgid="375085478373011304">"VPN र एपहरू"</item> diff --git a/src/com/android/certinstaller/WiFiInstaller.java b/src/com/android/certinstaller/WiFiInstaller.java index 41827f6..ad03eca 100644 --- a/src/com/android/certinstaller/WiFiInstaller.java +++ b/src/com/android/certinstaller/WiFiInstaller.java @@ -1,5 +1,7 @@ package com.android.certinstaller; +import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + import android.app.Activity; import android.app.AlertDialog; import android.content.Context; @@ -13,6 +15,8 @@ import android.net.wifi.hotspot2.PasspointConfiguration; import android.os.AsyncTask; import android.os.Bundle; import android.provider.DocumentsContract; +import android.text.TextUtils; +import android.util.EventLog; import android.util.Log; import android.view.View; import android.widget.TextView; @@ -26,18 +30,24 @@ public class WiFiInstaller extends Activity { private static final String TAG = "WifiInstaller"; private static final String NETWORK_NAME = "network_name"; private static final String INSTALL_STATE = "install_state"; + private static final String TYPE_WIFI_CONFIG = "application/x-wifi-config"; public static final int INSTALL_SUCCESS = 2; public static final int INSTALL_FAIL = 1; public static final int INSTALL_FAIL_NO_WIFI = 0; - PasspointConfiguration mPasspointConfig; - WifiManager mWifiManager; - boolean doNotInstall; + private PasspointConfiguration mPasspointConfig; + private boolean mIsPasspointConfigurationValid; @Override protected void onCreate(Bundle savedStates) { super.onCreate(savedStates); + getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + mIsPasspointConfigurationValid = false; Bundle bundle = getIntent().getExtras(); + if (bundle == null) { + Log.e(TAG, "Invalid inputs"); + return; + } String uriString = bundle.getString(CertInstallerMain.WIFI_CONFIG_FILE); String mimeType = bundle.getString(CertInstallerMain.WIFI_CONFIG); byte[] data = bundle.getByteArray(CertInstallerMain.WIFI_CONFIG_DATA); @@ -45,17 +55,34 @@ public class WiFiInstaller extends Activity { Log.d(TAG, "WiFi data for " + CertInstallerMain.WIFI_CONFIG + ": " + mimeType + " is " + (data != null ? data.length : "-")); - mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); - mPasspointConfig = ConfigParser.parsePasspointConfig(mimeType, data); - dropFile(Uri.parse(uriString), getApplicationContext()); + // Make sure that the input is valid + if (data == null || data.length == 0 || TextUtils.isEmpty(uriString)) { + Log.e(TAG, "Invalid inputs"); + return; + } + + // Verify MIME type before parsing + if (!TextUtils.equals(mimeType, TYPE_WIFI_CONFIG)) { + Log.e(TAG, "Unexpected MIME type: " + mimeType); + EventLog.writeEvent(0x534e4554, "176756691", -1, "Invalid mime-type"); + return; + } + mPasspointConfig = ConfigParser.parsePasspointConfig(mimeType, data); if (mPasspointConfig == null) { - Log.w(TAG, "failed to build passpoint configuration"); - doNotInstall = true; - } else if (mPasspointConfig.getHomeSp() == null) { - Log.w(TAG, "Passpoint profile missing HomeSP information"); - doNotInstall = true; + Log.e(TAG, "Failed to build Passpoint configuration"); + EventLog.writeEvent(0x534e4554, "176756691", -1, "Invalid data in file " + + uriString); + return; + } + if (mPasspointConfig.getHomeSp() == null) { + Log.e(TAG, "Passpoint profile missing HomeSP information"); + } else { + // Passpoint configuration parsed successfully and valid. Mark to be installed. + mIsPasspointConfigurationValid = true; } + // Delete the file only if the Passpoint configuration was parsed successfully + dropFile(Uri.parse(uriString), getApplicationContext()); } @Override @@ -75,7 +102,8 @@ public class WiFiInstaller extends Activity { builder.setView(layout); TextView text = (TextView) layout.findViewById(R.id.wifi_info); - if (!doNotInstall) { + if (mIsPasspointConfigurationValid) { + WifiManager wifiManager = getSystemService(WifiManager.class); text.setText(String.format(getResources().getString(R.string.wifi_installer_detail), mPasspointConfig.getHomeSp().getFriendlyName())); @@ -93,14 +121,14 @@ public class WiFiInstaller extends Activity { public void run() { boolean success = true; try { - mWifiManager.removePasspointConfiguration( + wifiManager.removePasspointConfiguration( mPasspointConfig.getHomeSp().getFqdn()); } catch (IllegalArgumentException e) { // Do nothing. This is expected if a profile with this FQDN does not // exist. } try { - mWifiManager.addOrUpdatePasspointConfiguration(mPasspointConfig); + wifiManager.addOrUpdatePasspointConfiguration(mPasspointConfig); } catch (RuntimeException rte) { Log.w(TAG, "Caught exception while installing wifi config: " + rte, rte); @@ -144,7 +172,9 @@ public class WiFiInstaller extends Activity { } }); } - builder.create().show(); + final AlertDialog alertDialog = builder.create(); + alertDialog.show(); + alertDialog.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); } /** @@ -154,14 +184,14 @@ public class WiFiInstaller extends Activity { * @param context The context of the current application */ private static void dropFile(Uri uri, Context context) { - try { - if (DocumentsContract.isDocumentUri(context, uri)) { - DocumentsContract.deleteDocument(context.getContentResolver(), uri); - } else { - context.getContentResolver().delete(uri, null, null); + try { + if (DocumentsContract.isDocumentUri(context, uri)) { + DocumentsContract.deleteDocument(context.getContentResolver(), uri); + } else { + context.getContentResolver().delete(uri, null, null); + } + } catch (Exception e) { + Log.e(TAG, "could not delete document " + uri); } - } catch (Exception e) { - Log.e(TAG, "could not delete document " + uri); - } } } |