Merge "Fix the overflow when converting current time to milliseconds on 32bit system"
diff --git a/identity/CredentialData.cpp b/identity/CredentialData.cpp
index 1bf1527..803e671 100644
--- a/identity/CredentialData.cpp
+++ b/identity/CredentialData.cpp
@@ -520,8 +520,12 @@
bool allowUsingExpiredKeys) {
AuthKeyData* candidate = nullptr;
- int64_t nowMilliSeconds =
- std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()) * 1000;
+ time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
+ int64_t nowMilliSeconds;
+ if (__builtin_mul_overflow(int64_t(now), int64_t(1000), &nowMilliSeconds)) {
+ LOG(ERROR) << "Overflow converting " << now << " to milliseconds";
+ return nullptr;
+ }
int n = 0;
for (AuthKeyData& data : authKeyDatas_) {