Decode: ensure signed exponents don't start with an underscore (#699)
This commit is contained in:
@@ -465,6 +465,10 @@ func checkAndRemoveUnderscoresFloats(b []byte) ([]byte, error) {
|
||||
return nil, newDecodeError(b[i+1:i+2], "cannot have underscore before exponent")
|
||||
}
|
||||
before = false
|
||||
case '+', '-':
|
||||
// signed exponents
|
||||
cleaned = append(cleaned, c)
|
||||
before = false
|
||||
case 'e', 'E':
|
||||
if i < len(b)-1 && b[i+1] == '_' {
|
||||
return nil, newDecodeError(b[i+1:i+2], "cannot have underscore after exponent")
|
||||
|
||||
@@ -2317,6 +2317,14 @@ func TestUnmarshalDecodeErrors(t *testing.T) {
|
||||
desc: "number with negative sign and leading underscore",
|
||||
data: `a = -_0`,
|
||||
},
|
||||
{
|
||||
desc: "exponent with plus sign and leading underscore",
|
||||
data: `a = 0e+_0`,
|
||||
},
|
||||
{
|
||||
desc: "exponent with negative sign and leading underscore",
|
||||
data: `a = 0e-_0`,
|
||||
},
|
||||
{
|
||||
desc: "int with wrong base",
|
||||
data: `a = 0f2`,
|
||||
|
||||
Reference in New Issue
Block a user