From f5ddb6192300608fadc6b1a07915d4000ea9c808 Mon Sep 17 00:00:00 2001 From: Junyu Lai Date: Wed, 1 Sep 2021 07:36:14 +0000 Subject: [PATCH] NetworkStats: Avoid Division By 0 RawBytes should always be at least 1 to avoid division by 0 and ArithmeticException resulting in Settings crash. Bug: 197292638 Change-Id: I4e5ac9da7adf707d7f991483555ab5c6d0cc3245 Merged-In: I4e5ac9da7adf707d7f991483555ab5c6d0cc3245 (cherry picked from commit 49fb7e6da2ba08ead42d625b1aafa41a06fa45c2) --- .../java/com/android/server/net/NetworkStatsCollection.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/net/NetworkStatsCollection.java b/services/core/java/com/android/server/net/NetworkStatsCollection.java index 557fa89444..df372b1459 100644 --- a/services/core/java/com/android/server/net/NetworkStatsCollection.java +++ b/services/core/java/com/android/server/net/NetworkStatsCollection.java @@ -290,7 +290,8 @@ public class NetworkStatsCollection implements FileRotator.Reader, FileRotator.W combined.getValues(augmentStart, augmentEnd, entry); } - final long rawBytes = entry.rxBytes + entry.txBytes; + final long rawBytes = (entry.rxBytes + entry.txBytes) == 0 ? 1 : + (entry.rxBytes + entry.txBytes); final long rawRxBytes = entry.rxBytes == 0 ? 1 : entry.rxBytes; final long rawTxBytes = entry.txBytes == 0 ? 1 : entry.txBytes; final long targetBytes = augmentPlan.getDataUsageBytes();