Fix access past end of string in date parsing.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 2 Oct 2012 07:43:48 +0000 (10:43 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 2 Oct 2012 07:43:48 +0000 (10:43 +0300)
This affects date_in(), and a couple of other funcions that use DecodeDate().

Hitoshi Harada

src/backend/utils/adt/datetime.c

index d827d7d1463c7a5d80495bf6b9a71f143a9a133f..12211c8273d3c3338711f8f151e351aa5967f9f8 100644 (file)
@@ -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))
        {