From 2975b27bbd3d4e85a2488ac289e112bc0dedfebe Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Thu, 26 Mar 2020 09:32:27 +1100 Subject: [PATCH] scan: for style, adjust code for bad scan read counts Make the code more consistent with the rest of the file. Should have caught this in review of CL 225357. Change-Id: I12824cb436539c31604684e043ebb7587cc92471 Reviewed-on: https://go-review.googlesource.com/c/go/+/225557 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor --- src/bufio/scan.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bufio/scan.go b/src/bufio/scan.go index 976b5994eb..af46a14fbb 100644 --- a/src/bufio/scan.go +++ b/src/bufio/scan.go @@ -69,6 +69,7 @@ var ( ErrTooLong = errors.New("bufio.Scanner: token too long") ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count") ErrAdvanceTooFar = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input") + ErrBadReadCount = errors.New("bufio.Scanner: Read returned impossible count") ) const ( @@ -211,9 +212,9 @@ func (s *Scanner) Scan() bool { // be extra careful: Scanner is for safe, simple jobs. for loop := 0; ; { n, err := s.r.Read(s.buf[s.end:len(s.buf)]) - if n < 0 || n > len(s.buf)-s.end { - n = 0 - err = errors.New("bufio.Scanner: Read returned impossible count") + if n < 0 || len(s.buf)-s.end < n { + s.setErr(ErrBadReadCount) + break } s.end += n if err != nil { -- 2.50.0