Mercurial > hg > nginx-quic
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; |