aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCholerae Hu <choleraehyq@gmail.com>2017-07-25 14:04:50 +0800
committerIan Lance Taylor <iant@golang.org>2017-09-08 12:50:14 +0000
commit32e117d971eb4f802f27b98a0f13b7d9fc2d73fb (patch)
tree38ee502f1e217f4f7e65277137bed970b274017a
parenta323656bb3edce6b2913a4946be8481ef1311afc (diff)
downloadgo-32e117d971eb4f802f27b98a0f13b7d9fc2d73fb.tar.xz
time: don't match '---' month in time.Parse
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>
-rw-r--r--src/time/format.go4
-rw-r--r--src/time/format_test.go3
2 files changed, 5 insertions, 2 deletions
diff --git a/src/time/format.go b/src/time/format.go
index c960df0197..05f734eae7 100644
--- a/src/time/format.go
+++ b/src/time/format.go
@@ -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 {
diff --git a/src/time/format_test.go b/src/time/format_test.go
index 710de594a0..6d27f468c7 100644
--- a/src/time/format_test.go
+++ b/src/time/format_test.go
@@ -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) {