diff options
| author | Bryan C. Mills <bcmills@google.com> | 2017-08-16 14:58:19 -0400 |
|---|---|---|
| committer | Bryan Mills <bcmills@google.com> | 2017-08-16 21:25:51 +0000 |
| commit | 6a34ffa0738e53c60de506a3a3976c6ce9d2ef93 (patch) | |
| tree | 94ae647d14d786d34ea3ba91ca9caac9020c23d2 /src/bytes/buffer_test.go | |
| parent | d9606e55328340b85c70bd7c15affc1c961c5b22 (diff) | |
| download | go-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.go | 12 |
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) |
