]> Cypherpunks repositories - gostls13.git/commitdiff
go/scanner: don't allow "0x" and "0X" as integers
authorEvan Shaw <chickencha@gmail.com>
Fri, 27 May 2011 23:47:26 +0000 (16:47 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 27 May 2011 23:47:26 +0000 (16:47 -0700)
R=gri
CC=golang-dev
https://golang.org/cl/4560047

src/pkg/go/scanner/scanner.go
src/pkg/go/scanner/scanner_test.go

index 60ac45c86e06fd668c47d73cd981eee2bef1a13c..509abeca57ec2b20d956406546c87836f0c4f195 100644 (file)
@@ -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
index 5b99bede11818f4a444aaea4e0e294857544858c..8af972838d95237030a85b2635f8581d89d5b202 100644 (file)
@@ -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"},
 }