upon further consideration, ignoring bad \uuXXXX escape sequences could be dangerous, remove test

This commit is contained in:
alisdair sullivan 2012-03-29 00:18:53 -07:00
parent 867199539c
commit 5f6d7c1f01
3 changed files with 8 additions and 6 deletions

View file

@ -594,6 +594,8 @@ escape(<<$u, Rest/binary>>, Handler, Stack, Opts) ->
escaped_unicode(Rest, Handler, Stack, Opts);
escape(<<>>, Handler, Stack, Opts) ->
?incomplete(escape, <<>>, Handler, Stack, Opts);
escape(Bin, Handler, [Acc|Stack], Opts=#opts{ignore_bad_escapes=true}) ->
string(Bin, Handler, [?acc_seq(Acc, ?rsolidus)|Stack], Opts);
escape(Bin, Handler, Stack, Opts) ->
?error([Bin, Handler, Stack, Opts]).
@ -1247,10 +1249,6 @@ ignore_bad_escapes_test_() ->
{"ignore unrecognized escape sequence", ?_assertEqual(
decode(<<"[\"\\x25\"]">>, [ignore_bad_escapes]),
[start_array, {string, <<"\\x25">>}, end_array, end_json]
)},
{"ignore invalid \\uXXXX escape sequence", ?_assertEqual(
decode(<<"[\"\\uFFFF\"]">>, [ignore_bad_escapes]),
[start_array, {string, <<"\\uFFFF">>}, end_array, end_json]
)}
].

View file

@ -6,5 +6,6 @@
no_jsonp_escapes = false,
comments = false,
json_escape = false,
dirty_strings = false
dirty_strings = false,
ignore_bad_escapes = false
}).

View file

@ -53,6 +53,8 @@ parse_opts([json_escape|Rest], Opts) ->
parse_opts(Rest, Opts#opts{json_escape=true});
parse_opts([dirty_strings|Rest], Opts) ->
parse_opts(Rest, Opts#opts{json_escape=true});
parse_opts([ignore_bad_escapes|Rest], Opts) ->
parse_opts(Rest, Opts#opts{ignore_bad_escapes=true});
parse_opts(_, _) ->
{error, badarg}.
@ -66,7 +68,8 @@ valid_flags() ->
no_jsonp_escapes,
comments,
json_escape,
dirty_strings
dirty_strings,
ignore_bad_escapes
].