aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt')
-rw-r--r--src/backend/utils/adt/date.c5
-rw-r--r--src/backend/utils/adt/datetime.c6
2 files changed, 4 insertions, 7 deletions
diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c
index e737e720f5b..51c6b6bacbf 100644
--- a/src/backend/utils/adt/date.c
+++ b/src/backend/utils/adt/date.c
@@ -1924,9 +1924,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 utils/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")));
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 3d320ccdd58..452eb8532dd 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -2702,9 +2702,6 @@ DecodeNumberField(int len, char *str, int fmask,
* Return 0 if okay (and set *tzp), a DTERR code if not okay.
*
* NB: this must *not* ereport on failure; see commands/variable.c.
- *
- * Note: we allow timezone offsets up to 13:59. There are places that
- * use +1300 summer time.
*/
static int
DecodeTimezone(char *str, int *tzp)
@@ -2749,7 +2746,8 @@ DecodeTimezone(char *str, int *tzp)
else
min = 0;
- if (hr < 0 || hr > 14)
+ /* Range-check the values; see notes in utils/timestamp.h */
+ if (hr < 0 || hr > MAX_TZDISP_HOUR)
return DTERR_TZDISP_OVERFLOW;
if (min < 0 || min >= MINS_PER_HOUR)
return DTERR_TZDISP_OVERFLOW;