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

Commit 293ecad8 authored by Nazanin Bakhshi's avatar Nazanin Bakhshi
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
parent a58013ae
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
@@ -2606,7 +2606,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();
@@ -2614,7 +2614,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)