diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2022-08-21 02:21:49 -0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2022-08-23 17:35:01 +0000 |
| commit | f9cdc09497af299ef6a4d4d745aa0df4ebfdce52 (patch) | |
| tree | 8ed63d9e11b49de8427396a28d0a48c506b13694 /src | |
| parent | 4e9183cb14bf58011389c8a8c8ccaecd3ef50451 (diff) | |
| download | go-f9cdc09497af299ef6a4d4d745aa0df4ebfdce52.tar.xz | |
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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/time/format.go | 3 | ||||
| -rw-r--r-- | src/time/format_test.go | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/time/format.go b/src/time/format.go index ed2a0a8fc6..a278cd9e6b 100644 --- a/src/time/format.go +++ b/src/time/format.go @@ -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 diff --git a/src/time/format_test.go b/src/time/format_test.go index 0e5b92440e..e8caa5e1a4 100644 --- a/src/time/format_test.go +++ b/src/time/format_test.go @@ -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"}, |
