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

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

Merge changes from topic "carrier_certs_cherrypick"

* changes:
  Fix crashes seen when checking for carrierConfig certificates
  add checking for carrierConfigs certificates for psim
parents 096cd201 e55c2f99
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -551,7 +551,6 @@ public class SubscriptionInfo implements Parcelable {
     *
     * @param context Context of the application to check.
     * @return whether the app is authorized to manage this subscription per its metadata.
     * @throws UnsupportedOperationException if this subscription is not embedded.
     * @hide
     * @deprecated - Do not use.
     */
@@ -567,15 +566,11 @@ public class SubscriptionInfo implements Parcelable {
     * @param context Any context.
     * @param packageName Package name of the app to check.
     * @return whether the app is authorized to manage this subscription per its metadata.
     * @throws UnsupportedOperationException if this subscription is not embedded.
     * @hide
     * @deprecated - Do not use.
     */
    @Deprecated
    public boolean canManageSubscription(Context context, String packageName) {
        if (!isEmbedded()) {
            throw new UnsupportedOperationException("Not an embedded subscription");
        }
        List<UiccAccessRule> allAccessRules = getAllAccessRules();
        if (allAccessRules == null) {
            return false;
@@ -585,7 +580,8 @@ public class SubscriptionInfo implements Parcelable {
        try {
            packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
        } catch (PackageManager.NameNotFoundException e) {
            throw new IllegalArgumentException("Unknown package: " + packageName, e);
            Log.d("SubscriptionInfo", "canManageSubscription: Unknown package: " + packageName, e);
            return false;
        }
        for (UiccAccessRule rule : allAccessRules) {
            if (rule.getCarrierPrivilegeStatus(packageInfo)
@@ -606,9 +602,6 @@ public class SubscriptionInfo implements Parcelable {
     */
    @SystemApi
    public @Nullable List<UiccAccessRule> getAccessRules() {
        if (!isEmbedded()) {
            throw new UnsupportedOperationException("Not an embedded subscription");
        }
        if (mNativeAccessRules == null) return null;
        return Arrays.asList(mNativeAccessRules);
    }
@@ -619,11 +612,10 @@ public class SubscriptionInfo implements Parcelable {
     * @hide
     */
    public @Nullable List<UiccAccessRule> getAllAccessRules() {
        if (!isEmbedded()) {
            throw new UnsupportedOperationException("Not an embedded subscription");
        }
        List<UiccAccessRule> merged = new ArrayList<>();
        if (mNativeAccessRules != null) merged.addAll(getAccessRules());
        if (mNativeAccessRules != null) {
            merged.addAll(getAccessRules());
        }
        if (mCarrierConfigAccessRules != null) {
            merged.addAll(Arrays.asList(mCarrierConfigAccessRules));
        }
+4 −8
Original line number Diff line number Diff line
@@ -2624,7 +2624,6 @@ public class SubscriptionManager {
     *
     * @param info The subscription to check.
     * @return whether the app is authorized to manage this subscription per its metadata.
     * @throws IllegalArgumentException if this subscription is not embedded.
     */
    public boolean canManageSubscription(SubscriptionInfo info) {
        return canManageSubscription(info, mContext.getPackageName());
@@ -2640,14 +2639,10 @@ public class SubscriptionManager {
     * @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.
     * @throws IllegalArgumentException if this subscription is not embedded.
     * @hide
     */
    public boolean canManageSubscription(SubscriptionInfo info, String packageName) {
        if (!info.isEmbedded()) {
            throw new IllegalArgumentException("Not an embedded subscription");
        }
        if (info.getAllAccessRules() == null) {
        if (info == null || info.getAllAccessRules() == null) {
            return false;
        }
        PackageManager packageManager = mContext.getPackageManager();
@@ -2655,7 +2650,8 @@ public class SubscriptionManager {
        try {
            packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
        } catch (PackageManager.NameNotFoundException e) {
            throw new IllegalArgumentException("Unknown package: " + packageName, e);
            logd("Unknown package: " + packageName);
            return false;
        }
        for (UiccAccessRule rule : info.getAllAccessRules()) {
            if (rule.getCarrierPrivilegeStatus(packageInfo)
@@ -3048,7 +3044,7 @@ public class SubscriptionManager {
        // to the caller.
        boolean hasCarrierPrivilegePermission = TelephonyManager.from(mContext)
                .hasCarrierPrivileges(info.getSubscriptionId())
                || (info.isEmbedded() && canManageSubscription(info));
                || canManageSubscription(info);
        return hasCarrierPrivilegePermission;
    }