-
Notifications
You must be signed in to change notification settings - Fork 18.8k
Closed
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.
Milestone
Description
What version of Go are you using (go version)?
$ go1.17beta1 version go version go1.17beta1 darwin/amd64 $ gotip version go version devel go1.17-ff6f2051d9 Tue Jun 22 04:10:24 2021 +0000 darwin/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
darwin/amd64
What did you do?
While experimenting with the awesome new fuzzer, I encountered a class of panics in time.ParseDuration when it receives invalid input and calls into time.quote() to format an error message (playground):
package main
import (
"fmt"
"time"
)
func main() {
if _, err := time.ParseDuration("\x85\x85"); err != nil {
fmt.Println(err)
}
}$ gotip run parse_duration_panic.go
panic: runtime error: index out of range [2] with length 2
goroutine 1 [running]:
time.quote({0x10a209b, 0x2})
/Users/adam/sdk/gotip/src/time/format.go:770 +0x45f
time.ParseDuration({0x10a209b, 0x2})
/Users/adam/sdk/gotip/src/time/format.go:1500 +0x393
main.main()
/Users/adam/parse_duration_panic.go:9 +0x25
exit status 2
time/format.go:770 is in time.quote, which was refactored in https://go-review.googlesource.com/c/go/+/267017, though I haven't bisected to be sure that's the cause.
What did you expect to see?
$ go1.16.5 run parse_duration_panic.go
time: invalid duration "��"
What did you see instead?
$ go1.17beta1 run parse_duration_panic.go
panic: runtime error: index out of range [2] with length 2
goroutine 1 [running]:
time.quote({0x10a209b, 0x2})
/Users/adam/sdk/go1.17beta1/src/time/format.go:770 +0x45f
time.ParseDuration({0x10a209b, 0x2})
/Users/adam/sdk/go1.17beta1/src/time/format.go:1500 +0x393
main.main()
/Users/adam/parse_duration_panic.go:9 +0x25
exit status 2
$ gotip run parse_duration_panic.go
panic: runtime error: index out of range [2] with length 2
goroutine 1 [running]:
time.quote({0x10a209b, 0x2})
/Users/adam/sdk/gotip/src/time/format.go:770 +0x45f
time.ParseDuration({0x10a209b, 0x2})
/Users/adam/sdk/gotip/src/time/format.go:1500 +0x393
main.main()
/Users/adam/parse_duration_panic.go:9 +0x25
exit status 2
odeke-em
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.