From e55c2f992ce5a171009e87fb175c770615fd1f32 Mon Sep 17 00:00:00 2001 From: Nazanin Bakhshi Date: Thu, 29 Aug 2019 16:19:12 -0700 Subject: [PATCH] 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 --- telephony/java/android/telephony/SubscriptionInfo.java | 7 +++++-- telephony/java/android/telephony/SubscriptionManager.java | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java index bb2269fc4d00b..58f2858513758 100644 --- a/telephony/java/android/telephony/SubscriptionInfo.java +++ b/telephony/java/android/telephony/SubscriptionInfo.java @@ -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 getAllAccessRules() { List merged = new ArrayList<>(); - if (mNativeAccessRules != null) merged.addAll(getAccessRules()); + if (mNativeAccessRules != null) { + merged.addAll(getAccessRules()); + } if (mCarrierConfigAccessRules != null) { merged.addAll(Arrays.asList(mCarrierConfigAccessRules)); } diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 8ef63d501a907..8e6e9b842c34e 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -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)