mirror of
https://github.com/golang/go.git
synced 2025-12-28 14:49:41 +00:00
json/jsontext: normalize all invalid Kinds to 0
For #75431 Change-Id: Iafefe952d3c1837e2f4c8c24cae96945d9e5abbf Reviewed-on: https://go-review.googlesource.com/c/go/+/728380 Reviewed-by: Joseph Tsai <joetsai@digital-static.net> Auto-Submit: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
This commit is contained in:
parent
00642ee23b
commit
9de6468701
@ -193,8 +193,8 @@ var decoderErrorTestdata = []struct {
|
||||
name: jsontest.Name("InvalidStart"),
|
||||
in: ` #`,
|
||||
calls: []decoderMethodCall{
|
||||
{'#', zeroToken, newInvalidCharacterError("#", "at start of value").withPos(" ", ""), ""},
|
||||
{'#', zeroValue, newInvalidCharacterError("#", "at start of value").withPos(" ", ""), ""},
|
||||
{0, zeroToken, newInvalidCharacterError("#", "at start of value").withPos(" ", ""), ""},
|
||||
{0, zeroValue, newInvalidCharacterError("#", "at start of value").withPos(" ", ""), ""},
|
||||
},
|
||||
}, {
|
||||
name: jsontest.Name("StreamN0"),
|
||||
|
||||
@ -518,10 +518,31 @@ func (k Kind) String() string {
|
||||
}
|
||||
}
|
||||
|
||||
// normalize coalesces all possible starting characters of a number as just '0'.
|
||||
func (k Kind) normalize() Kind {
|
||||
if k == '-' || ('0' <= k && k <= '9') {
|
||||
return '0'
|
||||
}
|
||||
return k
|
||||
var normKind = [256]Kind{
|
||||
'n': 'n',
|
||||
'f': 'f',
|
||||
't': 't',
|
||||
'"': '"',
|
||||
'{': '{',
|
||||
'}': '}',
|
||||
'[': '[',
|
||||
']': ']',
|
||||
'-': '0',
|
||||
'0': '0',
|
||||
'1': '0',
|
||||
'2': '0',
|
||||
'3': '0',
|
||||
'4': '0',
|
||||
'5': '0',
|
||||
'6': '0',
|
||||
'7': '0',
|
||||
'8': '0',
|
||||
'9': '0',
|
||||
}
|
||||
|
||||
// normalize coalesces all possible starting characters of a number as just '0',
|
||||
// and converts all invalid kinds to 0.
|
||||
func (k Kind) normalize() Kind {
|
||||
// A lookup table keeps the inlining cost as low as possible.
|
||||
return normKind[k]
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user