diff options
author | Steven Liu <steveliu@google.com> | 2019-10-30 00:28:52 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-10-30 00:28:52 +0000 |
commit | 403b82346fac9e966f796d23e85238a43c078c3a (patch) | |
tree | 3ec97d4422ddbeb1cce98e77648906f626f2f86f /service | |
parent | 3ae7eafea238d3c228e281360152f72b01d25a8b (diff) | |
parent | e4cb48546eff7305a98b11646fd991d213345630 (diff) |
Merge "Add carrier ID field for WifiConfiguration and PasspointConfiguration."
Diffstat (limited to 'service')
3 files changed, 31 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java index d530cdbfc..a16d9684d 100644 --- a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java +++ b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java @@ -40,6 +40,7 @@ import android.net.wifi.WifiNetworkSuggestion; import android.net.wifi.WifiScanner; import android.os.Handler; import android.os.UserHandle; +import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -599,6 +600,9 @@ public class WifiNetworkSuggestionsManager { Log.w(TAG, "Empty list of network suggestions for " + packageName + ". Ignoring"); return WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS; } + if (!validateNetworkSuggestions(networkSuggestions, uid, packageName)) { + return WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_APP_DISALLOWED; + } PerAppInfo perAppInfo = mActiveNetworkSuggestionsPerApp.get(packageName); if (perAppInfo == null) { perAppInfo = new PerAppInfo(packageName); @@ -654,6 +658,23 @@ public class WifiNetworkSuggestionsManager { return WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS; } + private boolean validateNetworkSuggestions( + List<WifiNetworkSuggestion> networkSuggestions, int uid, String packageName) { + if (mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(uid)) { + return true; + } + for (WifiNetworkSuggestion suggestion : networkSuggestions) { + WifiConfiguration config = suggestion.wifiConfiguration; + if (config != null + && config.carrierId != TelephonyManager.UNKNOWN_CARRIER_ID) { + Log.e(TAG, "bad wifi suggestion from app: " + packageName); + return false; + } + } + + return true; + } + private void stopTrackingAppOpsChange(@NonNull String packageName) { AppOpsChangedListener appOpsChangedListener = mAppOpsChangedListenerPerApp.remove(packageName); diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointXmlUtils.java b/service/java/com/android/server/wifi/hotspot2/PasspointXmlUtils.java index 683728dc5..71eba0908 100644 --- a/service/java/com/android/server/wifi/hotspot2/PasspointXmlUtils.java +++ b/service/java/com/android/server/wifi/hotspot2/PasspointXmlUtils.java @@ -110,6 +110,7 @@ public class PasspointXmlUtils { private static final String XML_TAG_USAGE_LIMIT_START_TIME = "UsageLimitStartTime"; private static final String XML_TAG_USAGE_LIMIT_DATA_LIMIT = "UsageLimitDataLimit"; private static final String XML_TAG_USAGE_LIMIT_TIME_LIMIT = "UsageLimitTimeLimit"; + private static final String XML_TAG_CARRIER_ID = "CarrierId"; /** * Serialize a {@link PasspointConfiguration} to the output stream as a XML block. @@ -146,6 +147,7 @@ public class PasspointXmlUtils { XmlUtil.writeNextValue(out, XML_TAG_FRIENDLY_NAME_LIST, config.getServiceFriendlyNames()); } + XmlUtil.writeNextValue(out, XML_TAG_CARRIER_ID, config.getCarrierId()); } /** @@ -199,6 +201,9 @@ public class PasspointXmlUtils { case XML_TAG_FRIENDLY_NAME_LIST: config.setServiceFriendlyNames((Map<String, String>) value); break; + case XML_TAG_CARRIER_ID: + config.setCarrierId((int) value); + break; default: throw new XmlPullParserException("Unknown value under " + "PasspointConfiguration: " + in.getName()); diff --git a/service/java/com/android/server/wifi/util/XmlUtil.java b/service/java/com/android/server/wifi/util/XmlUtil.java index e1c48785a..f73b9974d 100644 --- a/service/java/com/android/server/wifi/util/XmlUtil.java +++ b/service/java/com/android/server/wifi/util/XmlUtil.java @@ -349,6 +349,7 @@ public class XmlUtil { public static final String XML_TAG_RANDOMIZED_MAC_ADDRESS = "RandomizedMacAddress"; public static final String XML_TAG_MAC_RANDOMIZATION_SETTING = "MacRandomizationSetting"; public static final String XML_TAG_SAE_PASSWORD_ID_KEY = "SaePasswordId"; + public static final String XML_TAG_CARRIER_ID = "CarrierId"; /** * Write WepKeys to the XML stream. @@ -479,6 +480,7 @@ public class XmlUtil { configuration.getRandomizedMacAddress().toString()); XmlUtil.writeNextValue(out, XML_TAG_MAC_RANDOMIZATION_SETTING, configuration.macRandomizationSetting); + XmlUtil.writeNextValue(out, XML_TAG_CARRIER_ID, configuration.carrierId); } /** @@ -666,6 +668,9 @@ public class XmlUtil { configuration.macRandomizationSetting = (int) value; macRandomizationSettingExists = true; break; + case XML_TAG_CARRIER_ID: + configuration.carrierId = (int) value; + break; default: throw new XmlPullParserException( "Unknown value name found: " + valueName[0]); |