aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2022-03-22 11:31:57 +0100
committerLoïc Hoguin <[email protected]>2022-03-22 11:31:57 +0100
commit79966f4d2525b11fa29e354fe68a66b4e3bf6c93 (patch)
tree89fc804c98aad23b3e209aab967f8e1795f7093c
parent563649edb6f0530e852fc98206216e92dc288bf2 (diff)
downloadcowlib-79966f4d2525b11fa29e354fe68a66b4e3bf6c93.tar.gz
cowlib-79966f4d2525b11fa29e354fe68a66b4e3bf6c93.tar.bz2
cowlib-79966f4d2525b11fa29e354fe68a66b4e3bf6c93.zip
Fix URI template reserved expansion of %-encoded
-rw-r--r--src/cow_uri_template.erl4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cow_uri_template.erl b/src/cow_uri_template.erl
index eac784f..7aba1fc 100644
--- a/src/cow_uri_template.erl
+++ b/src/cow_uri_template.erl
@@ -310,6 +310,9 @@ urlencode_unreserved(<<C,R/bits>>, Acc) ->
urlencode_unreserved(<<>>, Acc) ->
Acc.
+urlencode_reserved(<<$%,H,L,R/bits>>, Acc)
+ when ?IS_HEX(H), ?IS_HEX(L) ->
+ urlencode_reserved(R, <<Acc/binary,$%,H,L>>);
urlencode_reserved(<<C,R/bits>>, Acc)
when ?IS_URI_UNRESERVED(C) or ?IS_URI_GEN_DELIMS(C) or ?IS_URI_SUB_DELIMS(C) ->
urlencode_reserved(R, <<Acc/binary,C>>);
@@ -336,6 +339,7 @@ expand_uritemplate_test_() ->
end
])),
fun() ->
+ io:format("expected: ~0p", [Expected]),
case Expected of
false ->
{'EXIT', _} = (catch expand(URITemplate, Vars));