Merge "Carrier Priviliged Apps Can't Use Security Reasons" am: 1495e21484 am: 6f0dfba61c
Original change: https://android-review.googlesource.com/c/platform/packages/services/Telephony/+/2240588
Change-Id: I2df61e80a9b0d3177279141c5f96dc26ac3800a0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
old mode 100755
new mode 100644
index f8897e8..7ef6aad
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -6510,6 +6510,17 @@
@TelephonyManager.NetworkTypeBitMask long allowedNetworkTypes) {
TelephonyPermissions.enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(
mApp, subId, "setAllowedNetworkTypesForReason");
+ // If the caller only has carrier privileges, then they should not be able to override
+ // any network types which were set for security reasons.
+ if (mApp.checkCallingOrSelfPermission(Manifest.permission.MODIFY_PHONE_STATE)
+ != PERMISSION_GRANTED
+ && (reason == TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_ENABLE_2G
+ || reason == TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER_RESTRICTIONS)) {
+ throw new SecurityException(
+ "setAllowedNetworkTypesForReason cannot be called with carrier privileges for"
+ + " reason "
+ + reason);
+ }
if (!TelephonyManager.isValidAllowedNetworkTypesReason(reason)) {
loge("setAllowedNetworkTypesForReason: Invalid allowed network type reason: " + reason);
return false;