From 6a34ffa0738e53c60de506a3a3976c6ce9d2ef93 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 16 Aug 2017 14:58:19 -0400 Subject: 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 --- src/bytes/buffer_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/bytes/buffer_test.go') 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) -- cgit v1.3