From cd0ff9c0f47784b428981280cd9564bb79a8266a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 30 May 2012 19:58:35 -0400 Subject: Expand the allowed range of timezone offsets to +/-15:59:59 from Greenwich. We used to only allow offsets less than +/-13 hours, then it was +/14, then it was +/-15. That's still not good enough though, as per today's bug report from Patric Bechtel. This time I actually looked through the Olson timezone database to find the largest offsets used anywhere. The winners are Asia/Manila, at -15:56:00 until 1844, and America/Metlakatla, at +15:13:42 until 1867. So we'd better allow offsets less than +/-16 hours. Given the history, we are way overdue to have some greppable #define symbols controlling this, so make some ... and also remove an obsolete comment that didn't get fixed the last time. Back-patch to all supported branches. --- src/backend/utils/adt/date.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/backend/utils/adt/date.c') diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index e2236d25951..0fc187e0d6f 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -1956,9 +1956,8 @@ timetz_recv(PG_FUNCTION_ARGS) result->zone = pq_getmsgint(buf, sizeof(result->zone)); - /* we allow GMT displacements up to 14:59:59, cf DecodeTimezone() */ - if (result->zone <= -15 * SECS_PER_HOUR || - result->zone >= 15 * SECS_PER_HOUR) + /* Check for sane GMT displacement; see notes in datatype/timestamp.h */ + if (result->zone <= -TZDISP_LIMIT || result->zone >= TZDISP_LIMIT) ereport(ERROR, (errcode(ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE), errmsg("time zone displacement out of range"))); -- cgit v1.2.3