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

Commit f918b0dc authored by Xiangyu/Malcolm Chen's avatar Xiangyu/Malcolm Chen Committed by Gerrit Code Review
Browse files

Merge "Check Carrier Privilege on Hidden Subs"

parents 3268a5ec 4f5bb32f
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -2116,29 +2116,36 @@ public class SubscriptionManager {
    }

    /**
     * TODO(b/137102918) Make this static, tests use this as an instance method currently.
     *
     * @return the list of subId's that are active,
     *         is never null but the length maybe 0.
     * @hide
     */
    @UnsupportedAppUsage
    public @NonNull int[] getActiveSubscriptionIdList() {
        int[] subId = null;
        return getActiveSubscriptionIdList(/* visibleOnly */ true);
    }

    /**
     * TODO(b/137102918) Make this static, tests use this as an instance method currently.
     *
     * @return a non-null list of subId's that are active.
     *
     * @hide
     */
    public @NonNull int[] getActiveSubscriptionIdList(boolean visibleOnly) {
        try {
            ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
            if (iSub != null) {
                subId = iSub.getActiveSubIdList(/*visibleOnly*/true);
                int[] subId = iSub.getActiveSubIdList(visibleOnly);
                if (subId != null) return subId;
            }
        } catch (RemoteException ex) {
            // ignore it
        }

        if (subId == null) {
            subId = new int[0];
        }

        return subId;

        return new int[0];
    }

    /**
+8 −13
Original line number Diff line number Diff line
@@ -593,26 +593,21 @@ public final class TelephonyPermissions {
        }
    }

    /**
     * Returns whether the provided uid has carrier privileges for any active subscription ID.
     */
    private static boolean checkCarrierPrivilegeForAnySubId(Context context,
            Supplier<ITelephony> telephonySupplier, int uid) {
    /** Returns whether the provided uid has carrier privileges for any active subscription ID. */
    private static boolean checkCarrierPrivilegeForAnySubId(
            Context context, Supplier<ITelephony> telephonySupplier, int uid) {
        SubscriptionManager sm = (SubscriptionManager) context.getSystemService(
                Context.TELEPHONY_SUBSCRIPTION_SERVICE);
        int[] activeSubIds = sm.getActiveSubscriptionIdList();
        if (activeSubIds != null) {
        int[] activeSubIds = sm.getActiveSubscriptionIdList(/* visibleOnly */ false);
        for (int activeSubId : activeSubIds) {
            if (getCarrierPrivilegeStatus(telephonySupplier, activeSubId, uid)
                    == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
                return true;
            }
        }
        }
        return false;
    }


    private static int getCarrierPrivilegeStatus(
            Supplier<ITelephony> telephonySupplier, int subId, int uid) {
        ITelephony telephony = telephonySupplier.get();