1
0
mirror of https://github.com/golang/go synced 2024-11-18 10:04:43 -07:00

path/filepath: Panic in Match when parsing invalid character range.

Fixes #5668.

R=golang-dev, rsc, r
CC=golang-dev
https://golang.org/cl/12001056
This commit is contained in:
Pieter Droogendijk 2013-07-31 16:58:28 +10:00 committed by Rob Pike
parent 53b61057b2
commit 27032fddee
3 changed files with 16 additions and 0 deletions

View File

@ -132,6 +132,12 @@ func matchChunk(chunk, s string) (rest string, ok bool, err error) {
r, n := utf8.DecodeRuneInString(s) r, n := utf8.DecodeRuneInString(s)
s = s[n:] s = s[n:]
chunk = chunk[1:] chunk = chunk[1:]
// We can't end right after '[', we're expecting at least
// a closing bracket and possibly a caret.
if len(chunk) == 0 {
err = ErrBadPattern
return
}
// possibly negated // possibly negated
negated := chunk[0] == '^' negated := chunk[0] == '^'
if negated { if negated {

View File

@ -65,6 +65,11 @@ var matchTests = []MatchTest{
{"[-x]", "a", false, ErrBadPattern}, {"[-x]", "a", false, ErrBadPattern},
{"\\", "a", false, ErrBadPattern}, {"\\", "a", false, ErrBadPattern},
{"[a-b-c]", "a", false, ErrBadPattern}, {"[a-b-c]", "a", false, ErrBadPattern},
{"[", "a", false, ErrBadPattern},
{"[^", "a", false, ErrBadPattern},
{"[^bc", "a", false, ErrBadPattern},
{"a[", "a", false, nil},
{"a[", "ab", false, ErrBadPattern},
{"*x", "xxx", true, nil}, {"*x", "xxx", true, nil},
} }

View File

@ -61,6 +61,11 @@ var matchTests = []MatchTest{
{"[-x]", "a", false, ErrBadPattern}, {"[-x]", "a", false, ErrBadPattern},
{"\\", "a", false, ErrBadPattern}, {"\\", "a", false, ErrBadPattern},
{"[a-b-c]", "a", false, ErrBadPattern}, {"[a-b-c]", "a", false, ErrBadPattern},
{"[", "a", false, ErrBadPattern},
{"[^", "a", false, ErrBadPattern},
{"[^bc", "a", false, ErrBadPattern},
{"a[", "a", false, nil},
{"a[", "ab", false, ErrBadPattern},
{"*x", "xxx", true, nil}, {"*x", "xxx", true, nil},
} }