Replaced new-line-in-string check with control-char check; tests

pull/6/head
rxi 2015-08-19 19:59:44 +01:00
parent 7f823abd2e
commit 6fdbd28ed9
2 changed files with 7 additions and 6 deletions

View File

@ -198,11 +198,10 @@ local function parse_string(str, i, chr)
for j = i + 1, #str do
local x = str:sub(j, j)
if x == "\n" then
decode_error(str, j, "unexpected new line in string")
end
if x:byte() < 32 then
decode_error(str, j, "control character in string")
if last == "\\" then
elseif last == "\\" then
if x == "u" then
local hex = str:sub(j + 1, j + 5)
if not hex:find("%x%x%x%x") then

View File

@ -133,12 +133,14 @@ test("decode invalid", function()
end)
test("decode invalid escape", function()
test("decode invalid string", function()
local t = {
[["\z"]],
[["\1"]],
[["\u000z"]],
[["\ud83d\ude0q"]]
[["\ud83d\ude0q"]],
'"x\ny"',
'"x\0y"',
}
for i, v in ipairs(t) do
local status, err = pcall(json.decode, v)