fix(uri): uri_encode encodes brackets incorrectly for RFC2732 #31284

**Problem:**
The brackets in the RFC2732 regular expression are currently unescaped,
causing them to be misinterpreted as special characters denoting
character groups rather than as literal characters.

**Solution:**
Escape the brackets.
Fix #31270

(cherry picked from commit 442d338cb5)
This commit is contained in:
Jonny Kong 2024-12-11 08:48:17 -05:00 committed by github-actions[bot]
parent 01fe4fc589
commit 424a452401
2 changed files with 9 additions and 1 deletions

View File

@ -15,7 +15,7 @@ local PATTERNS = {
rfc2396 = "^A-Za-z0-9%-_.!~*'()", rfc2396 = "^A-Za-z0-9%-_.!~*'()",
-- RFC 2732 -- RFC 2732
-- https://tools.ietf.org/html/rfc2732 -- https://tools.ietf.org/html/rfc2732
rfc2732 = "^A-Za-z0-9%-_.!~*'()[]", rfc2732 = "^A-Za-z0-9%-_.!~*'()%[%]",
-- RFC 3986 -- RFC 3986
-- https://tools.ietf.org/html/rfc3986#section-2.2 -- https://tools.ietf.org/html/rfc3986#section-2.2
rfc3986 = "^A-Za-z0-9%-._~!$&'()*+,;=:@/", rfc3986 = "^A-Za-z0-9%-._~!$&'()*+,;=:@/",

View File

@ -252,4 +252,12 @@ describe('URI methods', function()
end end
) )
end) end)
describe('encode to uri', function()
it('rfc2732 including brackets', function()
exec_lua("str = '[:]'")
exec_lua("rfc = 'rfc2732'")
eq('[%3a]', exec_lua('return vim.uri_encode(str, rfc)'))
end)
end)
end) end)