aboutsummaryrefslogtreecommitdiff
path: root/src/bytes/buffer_test.go
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2017-08-16 14:58:19 -0400
committerBryan Mills <bcmills@google.com>2017-08-16 21:25:51 +0000
commit6a34ffa0738e53c60de506a3a3976c6ce9d2ef93 (patch)
tree94ae647d14d786d34ea3ba91ca9caac9020c23d2 /src/bytes/buffer_test.go
parentd9606e55328340b85c70bd7c15affc1c961c5b22 (diff)
downloadgo-6a34ffa0738e53c60de506a3a3976c6ce9d2ef93.tar.xz
bytes: avoid overflow in (*Buffer).Grow and ReadFrom
fixes #21481 Change-Id: I26717876a1c0ee25a86c81159c6b3c59563dfec6 Reviewed-on: https://go-review.googlesource.com/56230 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/bytes/buffer_test.go')
-rw-r--r--src/bytes/buffer_test.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/bytes/buffer_test.go b/src/bytes/buffer_test.go
index ce2f01a0ad..dcfbfced92 100644
--- a/src/bytes/buffer_test.go
+++ b/src/bytes/buffer_test.go
@@ -473,6 +473,18 @@ func TestGrow(t *testing.T) {
}
}
+func TestGrowOverflow(t *testing.T) {
+ defer func() {
+ if err := recover(); err != ErrTooLarge {
+ t.Errorf("after too-large Grow, recover() = %v; want %v", err, ErrTooLarge)
+ }
+ }()
+
+ buf := NewBuffer(make([]byte, 1))
+ const maxInt = int(^uint(0) >> 1)
+ buf.Grow(maxInt)
+}
+
// Was a bug: used to give EOF reading empty slice at EOF.
func TestReadEmptyAtEOF(t *testing.T) {
b := new(Buffer)