diff options
author | Kim Alvefur <zash@zash.se> | 2019-01-16 13:53:04 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2019-01-16 13:53:04 +0100 |
commit | 3e30870220e8c617cda3a06b1c9d9054b346283c (patch) | |
tree | 37d221126b4bb853517742623abe2ac9e769452d | |
parent | cf984835d120a714e2ed4337f8522e935cf85498 (diff) | |
download | prosody-3e30870220e8c617cda3a06b1c9d9054b346283c.tar.gz prosody-3e30870220e8c617cda3a06b1c9d9054b346283c.zip |
util.http: Fix decoding of uppercase URL encoded chars
Broken in 1af5106a2c34
-rw-r--r-- | spec/util_http_spec.lua | 5 | ||||
-rw-r--r-- | util/http.lua | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/spec/util_http_spec.lua b/spec/util_http_spec.lua index 0f51a86c..d38645f7 100644 --- a/spec/util_http_spec.lua +++ b/spec/util_http_spec.lua @@ -28,6 +28,11 @@ describe("util.http", function() it("should decode important URL characters", function() assert.are.equal("This & that = something", http.urldecode("This%20%26%20that%20%3d%20something"), "Important URL chars escaped"); end); + + it("should decode both lower and uppercase", function () + assert.are.equal("This & that = {something}.", http.urldecode("This%20%26%20that%20%3D%20%7Bsomething%7D%2E"), "Important URL chars escaped"); + end); + end); describe("#formencode()", function() diff --git a/util/http.lua b/util/http.lua index 1730d4d4..3852f91c 100644 --- a/util/http.lua +++ b/util/http.lua @@ -15,6 +15,7 @@ for i = 0, 255 do local u = format("%%%02x", i); url_codes[c] = u; url_codes[u] = c; + url_codes[u:upper()] = c; end local function urlencode(s) return s and (s:gsub("[^a-zA-Z0-9.~_-]", url_codes)); |