comparison src/core/ngx_times.c @ 7104:cdbcb73239ee

Introduced time truncation to December 31, 9999 (ticket #1368). Various buffers are allocated in an assumption that there would be no more than 4 year digits. This might not be true on platforms with 64-bit time_t, as 64-bit time_t is able to represent more than that. Such dates with more than 4 year digits hardly make sense though, as various date formats in use do not allow them anyway. As such, all dates are now truncated by ngx_gmtime() to December 31, 9999. This should have no effect on valid dates, though will prevent potential buffer overflows on invalid ones.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 13 Sep 2017 15:53:19 +0300
parents 644d0457782a
children 81fae70d6cb8
comparison
equal deleted inserted replaced
7103:644d0457782a 7104:cdbcb73239ee
309 } 309 }
310 310
311 days = t / 86400; 311 days = t / 86400;
312 sec = t % 86400; 312 sec = t % 86400;
313 313
314 /*
315 * no more than 4 year digits supported,
316 * truncate to December 31, 9999, 23:59:59
317 */
318
319 if (days > 2932896) {
320 days = 2932896;
321 sec = 86399;
322 }
323
314 /* January 1, 1970 was Thursday */ 324 /* January 1, 1970 was Thursday */
315 325
316 wday = (4 + days) % 7; 326 wday = (4 + days) % 7;
317 327
318 hour = sec / 3600; 328 hour = sec / 3600;