mirror of
https://github.com/soheilhy/cmux.git
synced 2024-11-09 19:21:52 +08:00
Fix index out of range in patricia tree
Bug #32 reported that there is an index out of range error. This
issue was introduced in 703b087
.
Fix #32 and add a test to detect this issue
This commit is contained in:
parent
e85da3027e
commit
eddb3b1467
@ -161,6 +161,10 @@ func (n *ptNode) match(b []byte, prefix bool) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if l >= len(b) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
nextN, ok := n.next[b[l]]
|
nextN, ok := n.next[b[l]]
|
||||||
if !ok {
|
if !ok {
|
||||||
return false
|
return false
|
||||||
|
@ -33,6 +33,13 @@ func testPTree(t *testing.T, strs ...string) {
|
|||||||
if pt.match(strings.NewReader(s + s)) {
|
if pt.match(strings.NewReader(s + s)) {
|
||||||
t.Errorf("%s matches %s", s+s, s)
|
t.Errorf("%s matches %s", s+s, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The following tests are just to catch index out of
|
||||||
|
// range and off-by-one errors and not the functionality.
|
||||||
|
pt.matchPrefix(strings.NewReader(s[:len(s)-1]))
|
||||||
|
pt.match(strings.NewReader(s[:len(s)-1]))
|
||||||
|
pt.matchPrefix(strings.NewReader(s + "$"))
|
||||||
|
pt.match(strings.NewReader(s + "$"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,5 +52,5 @@ func TestPatriciaNonOverlapping(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPatriciaOverlapping(t *testing.T) {
|
func TestPatriciaOverlapping(t *testing.T) {
|
||||||
testPTree(t, "foo", "far", "farther", "boo", "bar")
|
testPTree(t, "foo", "far", "farther", "boo", "ba", "bar")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user