1
0
mirror of https://github.com/golang/go synced 2024-11-22 17:14:41 -07:00

compress/flate: add a copy overrun test.

R=rsc, r
CC=golang-dev
https://golang.org/cl/6143043
This commit is contained in:
Nigel Tao 2012-05-01 14:28:33 +10:00
parent 83aa040c45
commit 86a91539b8

View File

@ -29,7 +29,7 @@ func TestForwardCopy(t *testing.T) {
{0, 0, 0, 0, ""}, {0, 0, 0, 0, ""},
} }
for _, tc := range testCases { for _, tc := range testCases {
b := []byte("012345678") b := []byte("0123456789")
dst := b[tc.dst0:tc.dst1] dst := b[tc.dst0:tc.dst1]
src := b[tc.src0:tc.src1] src := b[tc.src0:tc.src1]
n := forwardCopy(dst, src) n := forwardCopy(dst, src)
@ -38,5 +38,15 @@ func TestForwardCopy(t *testing.T) {
t.Errorf("dst=b[%d:%d], src=b[%d:%d]: got %q, want %q", t.Errorf("dst=b[%d:%d], src=b[%d:%d]: got %q, want %q",
tc.dst0, tc.dst1, tc.src0, tc.src1, got, tc.want) tc.dst0, tc.dst1, tc.src0, tc.src1, got, tc.want)
} }
// Check that the bytes outside of dst[:n] were not modified.
for i, x := range b {
if i >= tc.dst0 && i < tc.dst0+n {
continue
}
if int(x) != '0'+i {
t.Errorf("dst=b[%d:%d], src=b[%d:%d]: copy overrun at b[%d]: got '%c', want '%c'",
tc.dst0, tc.dst1, tc.src0, tc.src1, i, x, '0'+i)
}
}
} }
} }