aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/datetime.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2012-10-02 10:43:48 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2012-10-02 10:43:48 +0300
commit0899556e92958712cc31953497b82657cc706f94 (patch)
tree725535152a4c23c64a09c30e05d27ccac9a27612 /src/backend/utils/adt/datetime.c
parentdbdb2172a0940cc18985a0c2b20cdb002fdf8466 (diff)
downloadpostgresql-0899556e92958712cc31953497b82657cc706f94.tar.gz
postgresql-0899556e92958712cc31953497b82657cc706f94.zip
Fix access past end of string in date parsing.
This affects date_in(), and a couple of other funcions that use DecodeDate(). Hitoshi Harada
Diffstat (limited to 'src/backend/utils/adt/datetime.c')
-rw-r--r--src/backend/utils/adt/datetime.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index d827d7d1463..12211c8273d 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -2176,9 +2176,12 @@ DecodeDate(char *str, int fmask, int *tmask, bool *is2digits,
while (*str != '\0' && nf < MAXDATEFIELDS)
{
/* skip field separators */
- while (!isalnum((unsigned char) *str))
+ while (*str != '\0' && !isalnum((unsigned char) *str))
str++;
+ if (*str == '\0')
+ return DTERR_BAD_FORMAT; /* end of string after separator */
+
field[nf] = str;
if (isdigit((unsigned char) *str))
{