vold: fix write kbytes handling

Since Android platform codespace doesn't support exception handling, we
use strtoll() instead of stoll for direct error handling.

Bug: 274369737
Test: check smart idle maintenace service log
Change-Id: I57c709b1e329228790e0a883edb64dc023135a24
This commit is contained in:
Daeho Jeong 2023-03-24 14:51:53 -07:00
parent c1572fe8cf
commit dd08c52eb8

View file

@ -630,7 +630,12 @@ static int32_t getLifeTimeWrite() {
return -1; 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; return writeBytes / KBYTES_IN_SEGMENT;
} }