F2.2: reject raw control bytes (U+0000..U+001F) in JSON strings
parse_string scanned for `"` and `\` but accepted every other byte, including raw control characters. RFC 8259 §7 requires those bytes to be escaped inside a string; an unescaped one is invalid JSON and must surface a parse error, not be silently accepted. Add `BadControlChar` to JsonParseError and reject any unescaped byte < 0x20 in the string body scan (which gates the decode path too, so escaped forms like \t/\n/ still decode correctly; 0x20 and 0x7F are not over-rejected). Regression test in examples/0714: raw 0x09/0x0A/0x00 each raise BadControlChar via `?`/`!`; a positive case proves the escaped forms still decode to the right bytes. All prior assertions kept.
This commit is contained in:
@@ -33,4 +33,11 @@ err-fraction: ok
|
||||
err-leading-zero: ok
|
||||
err-overflow: ok
|
||||
err-unterminated: ok
|
||||
err-raw-tab: ok
|
||||
err-raw-lf: ok
|
||||
err-raw-nul: ok
|
||||
esc-ctrl-len: ok
|
||||
esc-tab: ok
|
||||
esc-lf: ok
|
||||
esc-u: ok
|
||||
=== DONE ===
|
||||
|
||||
Reference in New Issue
Block a user