]> granicus.if.org Git - postgresql/commitdiff
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:46:12 +0000 (10:46 +0300)
This affects date_in(), and a couple of other funcions that use DecodeDate().

Hitoshi Harada

src/backend/utils/adt/datetime.c

index 26c6742e8b10d8476589873cbcb38f25633079c9..202763b1c7fa195e865b28140d0c575e363e523b 100644 (file)
@@ -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))
                {