diff options
| author | Evan Shaw <chickencha@gmail.com> | 2011-05-27 16:47:26 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2011-05-27 16:47:26 -0700 |
| commit | f369fc09f41bcb9b7bfdfbc21332abe98f89059e (patch) | |
| tree | ddcc854c3652e7df44f4e6806995603f49b0bf80 /src/pkg | |
| parent | 399a311e64aa7bc5282ce1489a53f1f25c2edeb0 (diff) | |
| download | go-f369fc09f41bcb9b7bfdfbc21332abe98f89059e.tar.xz | |
go/scanner: don't allow "0x" and "0X" as integers
R=gri
CC=golang-dev
https://golang.org/cl/4560047
Diffstat (limited to 'src/pkg')
| -rw-r--r-- | src/pkg/go/scanner/scanner.go | 4 | ||||
| -rw-r--r-- | src/pkg/go/scanner/scanner_test.go | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/go/scanner/scanner.go b/src/pkg/go/scanner/scanner.go index 60ac45c86e..509abeca57 100644 --- a/src/pkg/go/scanner/scanner.go +++ b/src/pkg/go/scanner/scanner.go @@ -297,6 +297,10 @@ func (S *Scanner) scanNumber(seenDecimalPoint bool) token.Token { // hexadecimal int S.next() S.scanMantissa(16) + if S.offset-offs <= 2 { + // only scanned "0x" or "0X" + S.error(offs, "illegal hexadecimal number") + } } else { // octal int or float seenDecimalDigit := false diff --git a/src/pkg/go/scanner/scanner_test.go b/src/pkg/go/scanner/scanner_test.go index 5b99bede11..8af972838d 100644 --- a/src/pkg/go/scanner/scanner_test.go +++ b/src/pkg/go/scanner/scanner_test.go @@ -672,6 +672,8 @@ var errors = []struct { {"078e0", token.FLOAT, 0, ""}, {"078", token.INT, 0, "illegal octal number"}, {"07800000009", token.INT, 0, "illegal octal number"}, + {"0x", token.INT, 0, "illegal hexadecimal number"}, + {"0X", token.INT, 0, "illegal hexadecimal number"}, {"\"abc\x00def\"", token.STRING, 4, "illegal character NUL"}, {"\"abc\x80def\"", token.STRING, 4, "illegal UTF-8 encoding"}, } |
