Skip to content

Commit d20190c

Browse files
committed
Allow lower case escapes in URI
See RFC 2396 2.4.1 Closes #1857
1 parent f65ef1d commit d20190c

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

lib/elixir/lib/uri.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ defmodule URI do
137137
def decode(<<>>), do: <<>>
138138

139139
defp hex2dec(n) when n in ?A..?F, do: n - ?A + 10
140+
defp hex2dec(n) when n in ?a..?f, do: n - ?a + 10
140141
defp hex2dec(n) when n in ?0..?9, do: n - ?0
141142

142143
defp check_plus(?+), do: 32

lib/elixir/test/elixir/uri_test.exs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ defmodule URITest do
155155
port_uri = URI.parse("http://[#{addr}]:2222/")
156156
assert port_uri.host == addr
157157
assert port_uri.port == 2222
158-
158+
159159
userinfo_port_uri = URI.parse("http://user:pass@[#{addr}]:2222/")
160160
assert userinfo_port_uri.host == addr
161161
assert userinfo_port_uri.userinfo == "user:pass"
@@ -176,4 +176,9 @@ defmodule URITest do
176176
assert to_string(URI.parse("http://google.com?q=lol")) == "http://google.com?q=lol"
177177
assert to_string(URI.parse("http://google.com?q=lol#omg")) == "http://google.com?q=lol#omg"
178178
end
179+
180+
test :escape do
181+
assert URI.decode("%2f%41%4a%55") == "/AJU"
182+
assert URI.decode("%2F%41%4A%55") == "/AJU"
183+
end
179184
end

0 commit comments

Comments
 (0)