*** pgsql/src/backend/utils/adt/datetime.c 2008/10/02 13:47:44 1.184.2.3 --- pgsql/src/backend/utils/adt/datetime.c 2009/05/01 19:29:13 1.184.2.4 *************** *** 8,14 **** * * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.184.2.2 2008/06/09 19:34:09 tgl Exp $ * *------------------------------------------------------------------------- */ --- 8,14 ---- * * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.184.2.3 2008/10/02 13:47:44 tgl Exp $ * *------------------------------------------------------------------------- */ *************** DecodeDateTime(char **field, int *ftype, *** 841,847 **** */ /* test for > 24:00:00 */ if (tm->tm_hour > 24 || ! (tm->tm_hour == 24 && (tm->tm_min > 0 || tm->tm_sec > 0))) return DTERR_FIELD_OVERFLOW; break; --- 841,848 ---- */ /* test for > 24:00:00 */ if (tm->tm_hour > 24 || ! (tm->tm_hour == 24 && ! (tm->tm_min > 0 || tm->tm_sec > 0 || *fsec > 0))) return DTERR_FIELD_OVERFLOW; break; *************** DecodeTimeOnly(char **field, int *ftype, *** 1959,1973 **** if (tm->tm_hour < 0 || tm->tm_min < 0 || tm->tm_min > 59 || tm->tm_sec < 0 || tm->tm_sec > 60 || tm->tm_hour > 24 || ! /* test for > 24:00:00 */ #ifdef HAVE_INT64_TIMESTAMP ! (tm->tm_hour == 24 && (tm->tm_min > 0 || tm->tm_sec > 0 || ! *fsec > INT64CONST(0))) || ! *fsec < INT64CONST(0) || *fsec >= USECS_PER_SEC #else ! (tm->tm_hour == 24 && (tm->tm_min > 0 || tm->tm_sec > 0 || ! *fsec > 0)) || ! *fsec < 0 || *fsec >= 1 #endif ) return DTERR_FIELD_OVERFLOW; --- 1960,1972 ---- if (tm->tm_hour < 0 || tm->tm_min < 0 || tm->tm_min > 59 || tm->tm_sec < 0 || tm->tm_sec > 60 || tm->tm_hour > 24 || ! /* test for > 24:00:00 */ ! (tm->tm_hour == 24 && ! (tm->tm_min > 0 || tm->tm_sec > 0 || *fsec > 0)) || #ifdef HAVE_INT64_TIMESTAMP ! *fsec < INT64CONST(0) || *fsec > USECS_PER_SEC #else ! *fsec < 0 || *fsec > 1 #endif ) return DTERR_FIELD_OVERFLOW; *************** DecodeTime(char *str, int fmask, int *tm *** 2272,2282 **** #ifdef HAVE_INT64_TIMESTAMP if (tm->tm_hour < 0 || tm->tm_min < 0 || tm->tm_min > 59 || tm->tm_sec < 0 || tm->tm_sec > 60 || *fsec < INT64CONST(0) || ! *fsec >= USECS_PER_SEC) return DTERR_FIELD_OVERFLOW; #else if (tm->tm_hour < 0 || tm->tm_min < 0 || tm->tm_min > 59 || ! tm->tm_sec < 0 || tm->tm_sec > 60 || *fsec < 0 || *fsec >= 1) return DTERR_FIELD_OVERFLOW; #endif --- 2271,2281 ---- #ifdef HAVE_INT64_TIMESTAMP if (tm->tm_hour < 0 || tm->tm_min < 0 || tm->tm_min > 59 || tm->tm_sec < 0 || tm->tm_sec > 60 || *fsec < INT64CONST(0) || ! *fsec > USECS_PER_SEC) return DTERR_FIELD_OVERFLOW; #else if (tm->tm_hour < 0 || tm->tm_min < 0 || tm->tm_min > 59 || ! tm->tm_sec < 0 || tm->tm_sec > 60 || *fsec < 0 || *fsec > 1) return DTERR_FIELD_OVERFLOW; #endif