]> Cypherpunks repositories - gostls13.git/commitdiff
time: don't match '---' month in time.Parse
authorCholerae Hu <choleraehyq@gmail.com>
Tue, 25 Jul 2017 06:04:50 +0000 (14:04 +0800)
committerIan Lance Taylor <iant@golang.org>
Fri, 8 Sep 2017 12:50:14 +0000 (12:50 +0000)
The existing implementation will panic when month in date string is '---'.

Fixed #21113

Change-Id: I8058ae7a4102e882f8b7e9c65d80936b563265e4
Reviewed-on: https://go-review.googlesource.com/51010
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/time/format.go
src/time/format_test.go

index c960df01978c5a98c4216c5543453cedd0869d9e..05f734eae7bf982882624c309fd4bace0c2d29f2 100644 (file)
@@ -289,7 +289,6 @@ var shortDayNames = []string{
 }
 
 var shortMonthNames = []string{
-       "---",
        "Jan",
        "Feb",
        "Mar",
@@ -305,7 +304,6 @@ var shortMonthNames = []string{
 }
 
 var longMonthNames = []string{
-       "---",
        "January",
        "February",
        "March",
@@ -841,8 +839,10 @@ func parse(layout, value string, defaultLocation, local *Location) (Time, error)
                        year, err = atoi(p)
                case stdMonth:
                        month, value, err = lookup(shortMonthNames, value)
+                       month++
                case stdLongMonth:
                        month, value, err = lookup(longMonthNames, value)
+                       month++
                case stdNumMonth, stdZeroMonth:
                        month, value, err = getnum(value, std == stdZeroMonth)
                        if month <= 0 || 12 < month {
index 710de594a0106a6bfdfc6c9fc646a34cad80220c..6d27f468c7b7863fcd3dde6159dd6bbb97245deb 100644 (file)
@@ -465,6 +465,9 @@ var parseErrorTests = []ParseErrorTest{
        {RFC3339, "2006-01-02T15:04:05Z_abc", `parsing time "2006-01-02T15:04:05Z_abc": extra text: _abc`},
        // invalid second followed by optional fractional seconds
        {RFC3339, "2010-02-04T21:00:67.012345678-08:00", "second out of range"},
+       // issue 21113
+       {"_2 Jan 06 15:04 MST", "4 --- 00 00:00 GMT", "cannot parse"},
+       {"_2 January 06 15:04 MST", "4 --- 00 00:00 GMT", "cannot parse"},
 }
 
 func TestParseErrors(t *testing.T) {