From 8508e6637b3b142f1bd315af9f07b1e5d0a63dea Mon Sep 17 00:00:00 2001 From: Tzuhao Tseng Date: Thu, 28 Nov 2024 15:55:32 +0800 Subject: Fix DnsEvent ArrayIndexOutOfBound error If both eventCount and eventTypes.length are equal to 1, then after resizing the eventTypes array, its length remains 1. Therefore, attempting to access eventTypes[eventCount] = eventType would result in an ArrayIndexOutOfBoundsException error. If the length of the eventTypes array remains the same as eventCount after resizing, then the length of the eventTypes array needs to be incremented by 1 again. Test: GOTA test Bug: 381457920 Change-Id: I7926961e6a94a976524f729d049ee7164a48d233 --- core/java/android/net/metrics/DnsEvent.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/java/android/net/metrics/DnsEvent.java b/core/java/android/net/metrics/DnsEvent.java index bf351ce07fe8..f53d1c4d191d 100644 --- a/core/java/android/net/metrics/DnsEvent.java +++ b/core/java/android/net/metrics/DnsEvent.java @@ -62,7 +62,11 @@ final public class DnsEvent { return isSuccess; } if (eventCount == eventTypes.length) { - resize((int) (1.4 * eventCount)); + int resizeLength = (int) (1.4 * eventCount); + if (eventCount == resizeLength) { + resizeLength++; + } + resize(resizeLength); } eventTypes[eventCount] = eventType; returnCodes[eventCount] = returnCode; -- cgit v1.2.3-59-g8ed1b