diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2013-03-04 15:13:31 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2013-03-04 15:13:49 -0500 |
commit | fa852303f0cda557e620af775c2e96b56eb365ba (patch) | |
tree | 7d29039555a9b4b5c4f38291334addd0ad02d726 /src/backend/utils/adt/timestamp.c | |
parent | d4f4bdf23a47dc2b6122195bbff4b09c80e7e2f5 (diff) | |
download | postgresql-fa852303f0cda557e620af775c2e96b56eb365ba.tar.gz postgresql-fa852303f0cda557e620af775c2e96b56eb365ba.zip |
Fix overflow check in tm2timestamp (this time for sure).
I fixed this code back in commit 841b4a2d5, but didn't think carefully
enough about the behavior near zero, which meant it improperly rejected
1999-12-31 24:00:00. Per report from Magnus Hagander.
Diffstat (limited to 'src/backend/utils/adt/timestamp.c')
-rw-r--r-- | src/backend/utils/adt/timestamp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 8593b6b47f4..ab458155ecb 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -1646,8 +1646,9 @@ tm2timestamp(struct pg_tm * tm, fsec_t fsec, int *tzp, Timestamp *result) return -1; } /* check for just-barely overflow (okay except time-of-day wraps) */ - if ((*result < 0 && date >= 0) || - (*result >= 0 && date < 0)) + /* caution: we want to allow 1999-12-31 24:00:00 */ + if ((*result < 0 && date > 0) || + (*result > 0 && date < -1)) { *result = 0; /* keep compiler quiet */ return -1; |