From 6cc79f73345887e17387499e1b5c5dc742c69af0 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Tue, 25 Mar 2025 08:47:49 -0700 Subject: Fix UiccController crash due to inconsistent phone count Using TelephonyManager.getDefault() causes mContext to be null, which makes getPhoneCount quietly fall back to default values. This makes it return sometimes 0, sometimes 1, depending on whether the calling code used TelephonyManager.getDefault() or TelephonyManager.from(Context). Bug: 404627136 Flag: EXEMPT bugfix Test: boot gcar_x86_64-trunk_staging-userdebug and observe NPEs in logcat (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5a3ba387198cc50f42a032bc799112649a6be6b3) Merged-In: Ibf87e7cac9595d87ac593d581928b3863953a274 Change-Id: Ibf87e7cac9595d87ac593d581928b3863953a274 --- src/java/com/android/internal/telephony/uicc/UiccController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java/com/android/internal/telephony/uicc/UiccController.java b/src/java/com/android/internal/telephony/uicc/UiccController.java index 5c2b6bef27..c242a1b29d 100644 --- a/src/java/com/android/internal/telephony/uicc/UiccController.java +++ b/src/java/com/android/internal/telephony/uicc/UiccController.java @@ -1665,7 +1665,7 @@ public class UiccController extends Handler { } private boolean isValidPhoneIndex(int index) { - return (index >= 0 && index < TelephonyManager.getDefault().getPhoneCount()); + return (index >= 0 && index < mTelephonyManager.getActiveModemCount()); } private boolean isValidSlotIndex(int index) { @@ -1673,7 +1673,7 @@ public class UiccController extends Handler { } private boolean isShuttingDown() { - for (int i = 0; i < TelephonyManager.getDefault().getActiveModemCount(); i++) { + for (int i = 0; i < mTelephonyManager.getActiveModemCount(); i++) { if (PhoneFactory.getPhone(i) != null && PhoneFactory.getPhone(i).isShuttingDown()) { return true; -- cgit v1.2.3-59-g8ed1b