mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-27 03:21:32 +03:00
util: improve overflow checks
commit 49371bb
fixed the observed division by zero, but missed another
occurrence of the same bug. It was also not the optimal fix. We can
simply make the divisor a constant by swapping it with the compared
value.
This commit is contained in:
parent
f36d7992ef
commit
fd09c93de9
@ -148,8 +148,7 @@ usec_t timespec_load(const struct timespec *ts) {
|
||||
ts->tv_nsec == (long) -1)
|
||||
return (usec_t) -1;
|
||||
|
||||
if (ts->tv_sec > 0 &&
|
||||
USEC_PER_SEC > ((UINT64_MAX - (ts->tv_nsec / NSEC_PER_USEC)) / (usec_t) ts->tv_sec))
|
||||
if ((usec_t) ts->tv_sec > (UINT64_MAX - (ts->tv_nsec / NSEC_PER_USEC)) / USEC_PER_SEC)
|
||||
return (usec_t) -1;
|
||||
|
||||
return
|
||||
@ -179,7 +178,7 @@ usec_t timeval_load(const struct timeval *tv) {
|
||||
tv->tv_usec == (suseconds_t) -1)
|
||||
return (usec_t) -1;
|
||||
|
||||
if (USEC_PER_SEC > (UINT64_MAX - tv->tv_usec) / (usec_t) tv->tv_sec)
|
||||
if ((usec_t) tv->tv_sec > (UINT64_MAX - tv->tv_usec) / USEC_PER_SEC)
|
||||
return (usec_t) -1;
|
||||
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user