From: Lennart Poettering Date: Thu, 2 Feb 2017 17:33:36 +0000 (+0100) Subject: time-util: when converting to time_t do something useful in 2038 X-Git-Tag: v233.3~79 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=f5ec357713381a95b30fa4f3d18aa092a632cfa9;p=elogind.git time-util: when converting to time_t do something useful in 2038 On systems where time_t is 32bit we should invalidate the timeval/timespec instead of proceeding with a potentially overflown value. --- diff --git a/src/basic/time-util.c b/src/basic/time-util.c index b8f56544d..1fcbbaa47 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -217,7 +217,8 @@ nsec_t timespec_load_nsec(const struct timespec *ts) { struct timespec *timespec_store(struct timespec *ts, usec_t u) { assert(ts); - if (u == USEC_INFINITY) { + if (u == USEC_INFINITY || + u / USEC_INFINITY >= TIME_T_MAX) { ts->tv_sec = (time_t) -1; ts->tv_nsec = (long) -1; return ts; @@ -246,7 +247,8 @@ usec_t timeval_load(const struct timeval *tv) { struct timeval *timeval_store(struct timeval *tv, usec_t u) { assert(tv); - if (u == USEC_INFINITY) { + if (u == USEC_INFINITY|| + u / USEC_PER_SEC > TIME_T_MAX) { tv->tv_sec = (time_t) -1; tv->tv_usec = (suseconds_t) -1; } else {