1
0
mirror of https://github.com/golang/go synced 2024-11-21 22:54:40 -07:00

compress/flate: fix out of bounds error

Fixes #2508.

R=rsc, krasin
CC=golang-dev
https://golang.org/cl/5449115
This commit is contained in:
Ivan Krasin 2011-12-12 18:25:32 -05:00 committed by Russ Cox
parent 26089cfe25
commit b1ae728d19
2 changed files with 15 additions and 1 deletions

View File

@ -319,7 +319,9 @@ Loop:
// For matches this long, we don't bother inserting each individual
// item into the table.
d.index += d.length
d.hash = (int(d.window[d.index])<<hashShift + int(d.window[d.index+1]))
if d.index < d.maxInsertIndex {
d.hash = (int(d.window[d.index])<<hashShift + int(d.window[d.index+1]))
}
}
if d.ti == maxFlateBlockTokens {
// The block includes the current character

View File

@ -318,3 +318,15 @@ func TestWriterDict(t *testing.T) {
t.Fatalf("writer wrote %q want %q", b1.Bytes(), b.Bytes())
}
}
// See http://code.google.com/p/go/issues/detail?id=2508
func TestRegression2508(t *testing.T) {
w := NewWriter(ioutil.Discard, 1)
buf := make([]byte, 1024)
for i := 0; i < 131072; i++ {
if _, err := w.Write(buf); err != nil {
t.Fatalf("writer failed: %v", err)
}
}
w.Close()
}