Fix a bug that the uid in getCarrierPrivilegeStatus(int uid) is not used.
The specified subId is not used when checking against carrier config.
Instead, we always use getCallingUid() which is incorrect.
Bug: 149077541
Bug: 153357164
Test: manual - use a test app that calls getCarrierPrivilegeStatus(int uid)
and verify via log that uid is used to evaluate carrier privilege
on carrier config.
Change-Id: I8d8277e86484d07582db6950360eec23bfbd06ae
Merged-In: I8d8277e86484d07582db6950360eec23bfbd06ae
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 34ec75c..98af8e6 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -5735,14 +5735,13 @@
}
}
- private int getCarrierPrivilegeStatusFromCarrierConfigRules(int privilegeFromSim,
+ private int getCarrierPrivilegeStatusFromCarrierConfigRules(int privilegeFromSim, int uid,
Phone phone) {
//load access rules from carrier configs, and check those as well: b/139133814
SubscriptionController subController = SubscriptionController.getInstance();
if (privilegeFromSim == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS
|| subController == null) return privilegeFromSim;
- int uid = Binder.getCallingUid();
PackageManager pkgMgr = phone.getContext().getPackageManager();
String[] packages = pkgMgr.getPackagesForUid(uid);
@@ -5796,7 +5795,7 @@
return getCarrierPrivilegeStatusFromCarrierConfigRules(
card.getCarrierPrivilegeStatusForCurrentTransaction(
- phone.getContext().getPackageManager()), phone);
+ phone.getContext().getPackageManager()), Binder.getCallingUid(), phone);
}
@Override
@@ -5815,7 +5814,7 @@
}
return getCarrierPrivilegeStatusFromCarrierConfigRules(
profile.getCarrierPrivilegeStatusForUid(
- phone.getContext().getPackageManager(), uid), phone);
+ phone.getContext().getPackageManager(), uid), uid, phone);
}
@Override