From df0e41042cb03998a3d5a0a1a50908bbec69223a Mon Sep 17 00:00:00 2001 From: zhouwenjie Date: Tue, 8 Oct 2019 15:01:26 -0700 Subject: [PATCH] Make sure mTransmitPowerInfo is always populated Currently mTransmitPowerInfo could be empty, which ends up with a IndexOutOfBoundsException. Bug: 141382585 Change-Id: I97417f539b2bfba98499cbf4b609ea7c088b808f Test: atest CtsIncidentHostTestCases:com.android.server.cts.BatteryStatsValidationTest --- .../java/android/telephony/ModemActivityInfo.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/telephony/java/android/telephony/ModemActivityInfo.java b/telephony/java/android/telephony/ModemActivityInfo.java index 43bc85c9f2bdf..d105fe3ddc71b 100644 --- a/telephony/java/android/telephony/ModemActivityInfo.java +++ b/telephony/java/android/telephony/ModemActivityInfo.java @@ -20,11 +20,10 @@ import android.annotation.NonNull; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; - import android.os.SystemClock; import android.util.Range; + import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -64,17 +63,20 @@ public final class ModemActivityInfo implements Parcelable { mTimestamp = timestamp; mSleepTimeMs = sleepTimeMs; mIdleTimeMs = idleTimeMs; - if (txTimeMs != null) { - populateTransmitPowerRange(txTimeMs); - } + populateTransmitPowerRange(txTimeMs); mRxTimeMs = rxTimeMs; } /** helper API to populate tx power range for each bucket **/ private void populateTransmitPowerRange(@NonNull int[] transmitPowerMs) { - for (int i = 0; i < Math.min(transmitPowerMs.length, TX_POWER_LEVELS); i++) { + int i = 0; + for ( ; i < Math.min(transmitPowerMs.length, TX_POWER_LEVELS); i++) { mTransmitPowerInfo.add(i, new TransmitPower(TX_POWER_RANGES[i], transmitPowerMs[i])); } + // Make sure that mTransmitPowerInfo is fully initialized. + for ( ; i < TX_POWER_LEVELS; i++) { + mTransmitPowerInfo.add(i, new TransmitPower(TX_POWER_RANGES[i], 0)); + } } @Override