1From f7ef75a1ddea9d18e1f166b76e90f948cbfd1f77 Mon Sep 17 00:00:00 2001
2From: Qijiang Fan <fqj@chromium.org>
3Date: Tue, 31 Mar 2020 17:43:16 +0900
4Subject: [PATCH] libchrome: fix integer overflow if microseconds is INT64_MIN
5
6Change-Id: Id3641f6b625f716ae6d134002c0224ed32284939
7---
8 base/time/time_exploded_posix.cc | 3 +--
9 1 file changed, 1 insertion(+), 2 deletions(-)
10
11diff --git a/base/time/time_exploded_posix.cc b/base/time/time_exploded_posix.cc
12index 627c6b4f8735..2aef3864554e 100644
13--- a/base/time/time_exploded_posix.cc
14+++ b/base/time/time_exploded_posix.cc
15@@ -141,8 +141,7 @@ void Time::Explode(bool is_local, Exploded* exploded) const {
16     millisecond = milliseconds % kMillisecondsPerSecond;
17   } else {
18     // Round these *down* (towards -infinity).
19-    milliseconds = (microseconds - kMicrosecondsPerMillisecond + 1) /
20-                   kMicrosecondsPerMillisecond;
21+    milliseconds = (microseconds + 1) / kMicrosecondsPerMillisecond - 1;
22     seconds =
23         (milliseconds - kMillisecondsPerSecond + 1) / kMillisecondsPerSecond;
24     // Make this nonnegative (and between 0 and 999 inclusive).
25--
262.24.1
27
28