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

Commit e55c2f99 authored by Nazanin Bakhshi's avatar Nazanin Bakhshi Committed by Malcolm Chen
Browse files

Fix crashes seen when checking for carrierConfig certificates

1. Do not throw exception when packageName is not found
2. Fix NPE caused by null SubscriptionInfo

Bug: 140122832
Test: Utest and manual test
Change-Id: I686647419896a1780f0697b3ed5d319363675f5f
Merged-In: I686647419896a1780f0697b3ed5d319363675f5f
parent 8fe1f7cb
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -580,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)
@@ -612,7 +613,9 @@ public class SubscriptionInfo implements Parcelable {
     */
    public @Nullable List<UiccAccessRule> getAllAccessRules() {
        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));
        }
+3 −2
Original line number Diff line number Diff line
@@ -2642,7 +2642,7 @@ public class SubscriptionManager {
     * @hide
     */
    public boolean canManageSubscription(SubscriptionInfo info, String packageName) {
        if (info.getAllAccessRules() == null) {
        if (info == null || info.getAllAccessRules() == null) {
            return false;
        }
        PackageManager packageManager = mContext.getPackageManager();
@@ -2650,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)