Add checks for READ_PRIVILEGED_PHONE_STATE.
Callers will have either PRIVILEGED or regular READ_PHONE_STATE.
Bug: 22468536
Change-Id: I60251f61250a975f4147b027d2539824a728e3b5
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index e0834c7..2c2e095 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -17,6 +17,7 @@
package com.android.phone;
import static android.Manifest.permission.READ_PHONE_STATE;
+import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;
import android.annotation.NonNull;
import android.app.ActivityManagerNative;
@@ -616,7 +617,12 @@
@Override public
@NonNull
PersistableBundle getConfigForSubId(int subId) {
- mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, null);
+ try {
+ mContext.enforceCallingOrSelfPermission(READ_PRIVILEGED_PHONE_STATE, null);
+ // SKIP checking run-time READ_PHONE_STATE since using PRIVILEGED
+ } catch (SecurityException e) {
+ mContext.enforceCallingOrSelfPermission(READ_PHONE_STATE, null);
+ }
int phoneId = SubscriptionManager.getPhoneId(subId);
PersistableBundle retConfig = CarrierConfigManager.getDefaultConfig();
if (SubscriptionManager.isValidPhoneId(phoneId)) {