Merge "vold: fix write kbytes handling" am: 13a57d2a26 am: 486c3507fb

Original change: https://android-review.googlesource.com/c/platform/system/vold/+/2507268

Change-Id: I697ba818c7399584b81c831eb14a8a4d55be7cee
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/IdleMaint.cpp b/IdleMaint.cpp
index 0c6b115..fedfc3d 100644
--- a/IdleMaint.cpp
+++ b/IdleMaint.cpp
@@ -630,7 +630,12 @@
         return -1;
     }
 
-    long long writeBytes = std::stoll(writeKbytesStr);
+    unsigned long long writeBytes = std::strtoull(writeKbytesStr.c_str(), NULL, 0);
+    /* Careful: values > LLONG_MAX can appear in the file due to a kernel bug. */
+    if (writeBytes / KBYTES_IN_SEGMENT > INT32_MAX) {
+        LOG(WARNING) << "Bad lifetime_write_kbytes: " << writeKbytesStr;
+        return -1;
+    }
     return writeBytes / KBYTES_IN_SEGMENT;
 }