diff options
Diffstat (limited to 'src/util/support/gmt_mktime.c')
-rw-r--r-- | src/util/support/gmt_mktime.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/util/support/gmt_mktime.c b/src/util/support/gmt_mktime.c index 32fef4386cd4..ac7752fefed0 100644 --- a/src/util/support/gmt_mktime.c +++ b/src/util/support/gmt_mktime.c @@ -78,21 +78,20 @@ static const int days_in_month[12] = { static time_t gmt_mktime(struct tm *t) { - time_t accum; + uint32_t accum; #define assert_time(cnd) if(!(cnd)) return (time_t) -1 /* - * For 32-bit signed time_t centered on 1/1/1970, the range is: - * time 0x80000000 -> Fri Dec 13 16:45:52 1901 - * time 0x7fffffff -> Mon Jan 18 22:14:07 2038 + * For 32-bit unsigned time values starting on 1/1/1970, the range is: + * time 0x00000000 -> Thu Jan 1 00:00:00 1970 + * time 0xffffffff -> Sun Feb 7 06:28:15 2106 * - * So years 1901 and 2038 are allowable, but we can't encode all - * dates in those years, and we're not doing overflow/underflow - * checking for such cases. + * We can't encode all dates in 2106, and we're not doing overflow checking + * for such cases. */ - assert_time(t->tm_year>=1); - assert_time(t->tm_year<=138); + assert_time(t->tm_year>=70); + assert_time(t->tm_year<=206); assert_time(t->tm_mon>=0); assert_time(t->tm_mon<=11); |