aboutsummaryrefslogtreecommitdiff
path: root/src/go/scanner/scanner.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/go/scanner/scanner.go')
-rw-r--r--src/go/scanner/scanner.go7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/go/scanner/scanner.go b/src/go/scanner/scanner.go
index 07e07581f7..6a7e30bb2f 100644
--- a/src/go/scanner/scanner.go
+++ b/src/go/scanner/scanner.go
@@ -246,13 +246,16 @@ func (s *Scanner) updateLineInfo(next, offs int, text []byte) {
return
}
+ // Put a cap on the maximum size of line and column numbers.
+ // 30 bits allows for some additional space before wrapping an int32.
+ const maxLineCol = 1<<30 - 1
var line, col int
i2, n2, ok2 := trailingDigits(text[:i-1])
if ok2 {
//line filename:line:col
i, i2 = i2, i
line, col = n2, n
- if col == 0 {
+ if col == 0 || col > maxLineCol {
s.error(offs+i2, "invalid column number: "+string(text[i2:]))
return
}
@@ -262,7 +265,7 @@ func (s *Scanner) updateLineInfo(next, offs int, text []byte) {
line = n
}
- if line == 0 {
+ if line == 0 || line > maxLineCol {
s.error(offs+i, "invalid line number: "+string(text[i:]))
return
}