summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorSteven Liu <steveliu@google.com>2019-10-30 00:28:52 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-10-30 00:28:52 +0000
commit403b82346fac9e966f796d23e85238a43c078c3a (patch)
tree3ec97d4422ddbeb1cce98e77648906f626f2f86f /service
parent3ae7eafea238d3c228e281360152f72b01d25a8b (diff)
parente4cb48546eff7305a98b11646fd991d213345630 (diff)
Merge "Add carrier ID field for WifiConfiguration and PasspointConfiguration."
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java21
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointXmlUtils.java5
-rw-r--r--service/java/com/android/server/wifi/util/XmlUtil.java5
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]);