summaryrefslogtreecommitdiff
path: root/src/util/support/gmt_mktime.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/support/gmt_mktime.c')
-rw-r--r--src/util/support/gmt_mktime.c17
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);