]> Cypherpunks repositories - gostls13.git/commitdiff
go/scanner: recognize invalid floating-point constant exponent
authorRobert Griesemer <gri@golang.org>
Wed, 26 Oct 2016 22:52:56 +0000 (15:52 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 26 Oct 2016 23:02:42 +0000 (23:02 +0000)
Fixes #17621.

Change-Id: Id3e75c9b7fba2cf8e791c8817f890556ca238e9d
Reviewed-on: https://go-review.googlesource.com/32096
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/go/scanner/scanner.go
src/go/scanner/scanner_test.go

index bf63e814aa7a0af3783e5b61f6368f244237bcbd..866744df03624d79ba32254c3f655b1fd229d4dd 100644 (file)
@@ -349,7 +349,11 @@ exponent:
                if s.ch == '-' || s.ch == '+' {
                        s.next()
                }
-               s.scanMantissa(10)
+               if digitVal(s.ch) < 10 {
+                       s.scanMantissa(10)
+               } else {
+                       s.error(offs, "illegal floating-point exponent")
+               }
        }
 
        if s.ch == 'i' {
index d1f2158898fee5dbaac5208ba077fe433c501709..c07ef1109eb70b7a4ce9e036c79b516b5baf8303 100644 (file)
@@ -717,6 +717,7 @@ var errors = []struct {
        {"078.", token.FLOAT, 0, "078.", ""},
        {"07801234567.", token.FLOAT, 0, "07801234567.", ""},
        {"078e0", token.FLOAT, 0, "078e0", ""},
+       {"0E", token.FLOAT, 0, "0E", "illegal floating-point exponent"}, // issue 17621
        {"078", token.INT, 0, "078", "illegal octal number"},
        {"07800000009", token.INT, 0, "07800000009", "illegal octal number"},
        {"0x", token.INT, 0, "0x", "illegal hexadecimal number"},