From 293ecad82748a65dc181c69b1b354e2452a48721 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 --- 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 a94b101d6b422..c6c198668d957 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 036d1ec75a24b..776b168e6766b 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -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)