Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9872a4d4 authored by Roman Kiryanov's avatar Roman Kiryanov
Browse files

Fix integer overflow in make_timestamp_ns_locked



timespec::tv_sec is time_t which is 32bit wide on
32bit platforms. Multipliyng 32bit integers (tv_sec and
1000) produces another 32bit integer which overflows
in this case and turns into a negative value which
confuses the logic downstream. This change makes the
multiplication to be 64bit which prevent the overflow.

Bug: 139320584
Bug: 139538727
Test: GtsIncidentManagerTestCases
Change-Id: Ie956074961c7c1f08e2519920f7ce69d5c9e12d3
Signed-off-by: default avatarRoman Kiryanov <rkir@google.com>
(cherry picked from commit e9db937f)
parent f4fc3e26
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -664,7 +664,7 @@ int64_t WorkDirectory::make_timestamp_ns_locked() {
            nanosleep(&spec, nullptr);
        }
        clock_gettime(CLOCK_REALTIME, &spec);
        timestampNs = (spec.tv_sec) * 1000 + spec.tv_nsec;
        timestampNs = int64_t(spec.tv_sec) * 1000 + spec.tv_nsec;
    } while (file_exists_locked(timestampNs));
    return timestampNs;
}