Reject absurdly long duration strings (fix #4175)

This commit is contained in:
Matthew Holt 2022-09-15 14:25:29 -06:00
parent 49b7a25264
commit f1f7a22674
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5

View File

@ -763,8 +763,12 @@ func (d *Duration) UnmarshalJSON(b []byte) error {
// ParseDuration parses a duration string, adding // ParseDuration parses a duration string, adding
// support for the "d" unit meaning number of days, // support for the "d" unit meaning number of days,
// where a day is assumed to be 24h. // where a day is assumed to be 24h. The maximum
// input string length is 1024.
func ParseDuration(s string) (time.Duration, error) { func ParseDuration(s string) (time.Duration, error) {
if len(s) > 1024 {
return 0, fmt.Errorf("parsing duration: input string too long")
}
var inNumber bool var inNumber bool
var numStart int var numStart int
for i := 0; i < len(s); i++ { for i := 0; i < len(s); i++ {