mirror of https://github.com/golang/go.git
time: fix Parse for empty seconds
The error return value of the seconds field is overwritten and not checked in the presence of a fractional second. Perform an explicit check for errors. Fixes #54569 Change-Id: I1204c8bdcd5a5a09b773d9e44748141ed1e5cb20 Reviewed-on: https://go-review.googlesource.com/c/go/+/425036 Reviewed-by: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Joseph Tsai <joetsai@digital-static.net> Auto-Submit: Joseph Tsai <joetsai@digital-static.net> Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
4e9183cb14
commit
f9cdc09497
|
|
@ -1135,6 +1135,9 @@ func parse(layout, value string, defaultLocation, local *Location) (Time, error)
|
|||
}
|
||||
case stdSecond, stdZeroSecond:
|
||||
sec, value, err = getnum(value, std == stdZeroSecond)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
if sec < 0 || 60 <= sec {
|
||||
rangeErrString = "second"
|
||||
break
|
||||
|
|
|
|||
|
|
@ -591,6 +591,8 @@ 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 54569
|
||||
{RFC3339, "0000-01-01T00:00:.0+00:00", `parsing time "0000-01-01T00:00:.0+00:00" as "2006-01-02T15:04:05Z07:00": cannot parse ".0+00:00" as "05"`},
|
||||
// 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"},
|
||||
|
|
|
|||
Loading…
Reference in New Issue