Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1d5fb4c authored by Sarah Chin's avatar Sarah Chin Committed by Automerger Merge Worker
Browse files

Merge "Update carrier privilege check in enforceSubscriptionPlanAccess" into...

Merge "Update carrier privilege check in enforceSubscriptionPlanAccess" into rvc-qpr-dev am: 5ccc5d56

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13676219

Change-Id: Iaa38b99c82bc54e6e8b7a93e24c800281fc53905
parents d5301eb3 5ccc5d56
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -3201,24 +3201,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        // Verify they're not lying about package name
        mAppOps.checkPackage(callingUid, callingPackage);

        final SubscriptionManager sm;
        final SubscriptionInfo si;
        final PersistableBundle config;
        final TelephonyManager tm;
        final long token = Binder.clearCallingIdentity();
        try {
            sm = mContext.getSystemService(SubscriptionManager.class);
            si = sm.getActiveSubscriptionInfo(subId);
            config = mCarrierConfigManager.getConfigForSubId(subId);
            tm = mContext.getSystemService(TelephonyManager.class);
        } finally {
            Binder.restoreCallingIdentity(token);
        }

        // First check: is caller the CarrierService?
        if (si != null) {
            if (si.isEmbedded() && sm.canManageSubscription(si, callingPackage)) {
        // First check: does caller have carrier privilege?
        if (tm != null && tm.hasCarrierPrivileges(subId)) {
            return;
        }
        }

        // Second check: has the CarrierService delegated access?
        if (config != null) {
+2 −2
Original line number Diff line number Diff line
@@ -149,13 +149,14 @@ public class SubscriptionInfo implements Parcelable {

    /**
     * The access rules for this subscription, if it is embedded and defines any.
     * This does not include access rules for non-embedded subscriptions.
     */
    @Nullable
    private UiccAccessRule[] mNativeAccessRules;

    /**
     * The carrier certificates for this subscription that are saved in carrier configs.
     * The other carrier certificates are embedded on Uicc and stored as part of mNativeAccessRules.
     * This does not include access rules from the Uicc, whether embedded or non-embedded.
     */
    @Nullable
    private UiccAccessRule[] mCarrierConfigAccessRules;
@@ -662,7 +663,6 @@ public class SubscriptionInfo implements Parcelable {
     * is authorized to manage this subscription.
     * TODO and fix it properly in R / master: either deprecate this and have 3 APIs
     *  native + carrier + all, or have this return all by default.
     * @throws UnsupportedOperationException if this subscription is not embedded.
     * @hide
     */
    @SystemApi
+8 −0
Original line number Diff line number Diff line
@@ -2699,6 +2699,10 @@ public class SubscriptionManager {
     * Checks whether the app with the given context is authorized to manage the given subscription
     * according to its metadata.
     *
     * Only supported for embedded subscriptions (if {@link SubscriptionInfo#isEmbedded} returns
     * true). To check for permissions for non-embedded subscription as well,
     * {@see android.telephony.TelephonyManager#hasCarrierPrivileges}.
     *
     * @param info The subscription to check.
     * @return whether the app is authorized to manage this subscription per its metadata.
     */
@@ -2711,6 +2715,10 @@ public class SubscriptionManager {
     * be authorized if it is included in the {@link android.telephony.UiccAccessRule} of the
     * {@link android.telephony.SubscriptionInfo} with the access status.
     *
     * Only supported for embedded subscriptions (if {@link SubscriptionInfo#isEmbedded} returns
     * true). To check for permissions for non-embedded subscription as well,
     * {@see android.telephony.TelephonyManager#hasCarrierPrivileges}.
     *
     * @param info The subscription to check.
     * @param packageName Package name of the app to check.
     * @return whether the app is authorized to manage this subscription per its access rules.
+6 −0
Original line number Diff line number Diff line
@@ -8549,6 +8549,9 @@ public class TelephonyManager {
     * call will return true. This access is granted by the owner of the UICC
     * card and does not depend on the registered carrier.
     *
     * Note that this API applies to both physical and embedded subscriptions and
     * is a superset of the checks done in SubscriptionManager#canManageSubscription.
     *
     * @return true if the app has carrier privileges.
     */
    public boolean hasCarrierPrivileges() {
@@ -8562,6 +8565,9 @@ public class TelephonyManager {
     * call will return true. This access is granted by the owner of the UICC
     * card and does not depend on the registered carrier.
     *
     * Note that this API applies to both physical and embedded subscriptions and
     * is a superset of the checks done in SubscriptionManager#canManageSubscription.
     *
     * @param subId The subscription to use.
     * @return true if the app has carrier privileges.
     * @hide