diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2012-10-02 10:43:48 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2012-10-02 10:46:12 +0300 |
commit | 23355e6cb9272cde1b695a3c6228e8e8186d59f4 (patch) | |
tree | e21f103e0d5d7cfc1853e712ef1291b95b531c72 /src | |
parent | fab2ae0ec9e71227003ae1177ef8c633a80ae4b0 (diff) | |
download | postgresql-23355e6cb9272cde1b695a3c6228e8e8186d59f4.tar.gz postgresql-23355e6cb9272cde1b695a3c6228e8e8186d59f4.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')
-rw-r--r-- | src/backend/utils/adt/datetime.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 26c6742e8b1..202763b1c7f 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -2165,9 +2165,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)) { |