fix overly permissive parser that allowed some encodings that should
have been failure states
This commit is contained in:
parent
99c81f88b9
commit
d6f687831e
1 changed files with 27 additions and 1 deletions
|
@ -129,7 +129,20 @@ when is_integer(Year), is_integer(Month), is_integer(Day), is_integer(Hour), is_
|
||||||
Stack,
|
Stack,
|
||||||
Config
|
Config
|
||||||
);
|
);
|
||||||
value([{_, Value}|Tokens], Handler, Stack, Config) ->
|
value([{literal, Value}|Tokens], Handler, Stack, Config)
|
||||||
|
when Value == true; Value == false; Value == null ->
|
||||||
|
value([Value] ++ Tokens, Handler, Stack, Config);
|
||||||
|
value([{integer, Value}|Tokens], Handler, Stack, Config)
|
||||||
|
when is_integer(Value) ->
|
||||||
|
value([Value] ++ Tokens, Handler, Stack, Config);
|
||||||
|
value([{float, Value}|Tokens], Handler, Stack, Config)
|
||||||
|
when is_float(Value) ->
|
||||||
|
value([Value] ++ Tokens, Handler, Stack, Config);
|
||||||
|
value([{string, Value}|Tokens], Handler, Stack, Config)
|
||||||
|
when is_binary(Value); is_atom(Value) ->
|
||||||
|
value([Value] ++ Tokens, Handler, Stack, Config);
|
||||||
|
value([{number, Value}|Tokens], Handler, Stack, Config)
|
||||||
|
when is_float(Value); is_integer(Value) ->
|
||||||
value([Value] ++ Tokens, Handler, Stack, Config);
|
value([Value] ++ Tokens, Handler, Stack, Config);
|
||||||
value([String|Tokens], Handler, Stack, Config) when is_atom(String) ->
|
value([String|Tokens], Handler, Stack, Config) when is_atom(String) ->
|
||||||
value([{string, atom_to_binary(String, utf8)}] ++ Tokens, Handler, Stack, Config);
|
value([{string, atom_to_binary(String, utf8)}] ++ Tokens, Handler, Stack, Config);
|
||||||
|
@ -1165,4 +1178,17 @@ datetime_test_() ->
|
||||||
].
|
].
|
||||||
|
|
||||||
|
|
||||||
|
rogue_tuple_test_() ->
|
||||||
|
[
|
||||||
|
{"kv in value position of object", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
parse([start_object, <<"key">>, {<<"key">>, <<"value">>}, end_object, end_json], [])
|
||||||
|
)},
|
||||||
|
{"kv in value position of list", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
parse([start_array, {<<"key">>, <<"value">>}, end_array, end_json], [])
|
||||||
|
)}
|
||||||
|
].
|
||||||
|
|
||||||
|
|
||||||
-endif.
|
-endif.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue