From 257be4778a716279f49d2db6e52703101fb8a4d9 Mon Sep 17 00:00:00 2001 From: "yifan.bai" Date: Tue, 21 Aug 2018 13:42:58 +0800 Subject: [PATCH] Fix oldMergedSS is altered to OUT_OF_SERVICE. ServiceState.copyFrom would throw NPE if s.mCellBandwidths is null. To fix, if s.mCellBandwidths is null, init mCellBandwidths to be null. Test: Build pass; Test: atest FrameworksTelephonyTests:ServiceStateTrackerTest Bug: 112714563 --- telephony/java/android/telephony/ServiceState.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index 9e8529e20a7b8..857ced7173c9f 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -341,9 +341,11 @@ public class ServiceState implements Parcelable { mIsDataRoamingFromRegistration = s.mIsDataRoamingFromRegistration; mIsUsingCarrierAggregation = s.mIsUsingCarrierAggregation; mChannelNumber = s.mChannelNumber; - mCellBandwidths = Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length); + mCellBandwidths = s.mCellBandwidths == null ? null : + Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length); mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost; - mNetworkRegistrationStates = new ArrayList<>(s.mNetworkRegistrationStates); + mNetworkRegistrationStates = s.mNetworkRegistrationStates == null ? null : + new ArrayList<>(s.mNetworkRegistrationStates); } /** @@ -783,7 +785,9 @@ public class ServiceState implements Parcelable { && mIsEmergencyOnly == s.mIsEmergencyOnly && mIsDataRoamingFromRegistration == s.mIsDataRoamingFromRegistration && mIsUsingCarrierAggregation == s.mIsUsingCarrierAggregation) - && mNetworkRegistrationStates.containsAll(s.mNetworkRegistrationStates); + && (mNetworkRegistrationStates == null ? s.mNetworkRegistrationStates == null : + s.mNetworkRegistrationStates != null && + mNetworkRegistrationStates.containsAll(s.mNetworkRegistrationStates)); } /**