Skip to content
Permalink
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mdounin committed Sep 13, 2017
1 parent 0206ebe commit b900cc2
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/core/ngx_times.c
Expand Up @@ -311,6 +311,16 @@ ngx_gmtime(time_t t, ngx_tm_t *tp)
days = t / 86400;
sec = t % 86400;

/*
* no more than 4 year digits supported,
* truncate to December 31, 9999, 23:59:59
*/

if (days > 2932896) {
days = 2932896;
sec = 86399;
}

/* January 1, 1970 was Thursday */

wday = (4 + days) % 7;
Expand Down

0 comments on commit b900cc2

Please sign in to comment.