]> Cypherpunks repositories - gostls13.git/commitdiff
time: make Parse validate day's lower bound in addition to upper bound
authorBrad Fitzpatrick <bradfitz@golang.org>
Tue, 22 Nov 2016 01:40:07 +0000 (01:40 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 22 Nov 2016 11:02:12 +0000 (11:02 +0000)
Day 0 is as invalid as day 32.

Fixes #17874

Change-Id: I52109d12bafd6d957d00c44d540cb88389fff0a7
Reviewed-on: https://go-review.googlesource.com/33429
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/time/format.go
src/time/format_test.go

index 3608b04e445714fc2c16c633cbd47261a5b159c4..3fbfa734d054dd0cad62e5317964af971a5a0d7a 100644 (file)
@@ -1012,7 +1012,7 @@ func parse(layout, value string, defaultLocation, local *Location) (Time, error)
        }
 
        // Validate the day of the month.
-       if day > daysIn(Month(month), year) {
+       if day < 1 || day > daysIn(Month(month), year) {
                return Time{}, &ParseError{alayout, avalue, "", value, ": day out of range"}
        }
 
index 640e8180e39d4584996740fc46a701e098453bfa..aa4434a09c3315fd011fc688a35d570e42dc1996 100644 (file)
@@ -224,6 +224,7 @@ var dayOutOfRangeTests = []struct {
        {"Thu Nov 31 21:00:57 2010", false},
        {"Thu Dec 31 21:00:57 2010", true},
        {"Thu Dec 32 21:00:57 2010", false},
+       {"Thu Dec 00 21:00:57 2010", false},
 }
 
 func TestParseDayOutOfRange(t *testing.T) {