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
diff --git a/core/java/android/net/metrics/DnsEvent.java b/core/java/android/net/metrics/DnsEvent.java
index bf351ce..f53d1c4 100644
--- a/core/java/android/net/metrics/DnsEvent.java
+++ b/core/java/android/net/metrics/DnsEvent.java
@@ -62,7 +62,11 @@
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;