aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonny Kong <jonnykong1996@gmail.com>2024-12-11 08:48:17 -0500
committerGitHub <noreply@github.com>2024-12-11 05:48:17 -0800
commit442d338cb50e4cf08c58cb82b6d33b6d5df9fb1b (patch)
tree46fdc750f0e0d0d7566e9d00c77bb1a9696c1658
parentff1791c9e59bccaee685a537e094f7d6bdc3b122 (diff)
downloadrneovim-442d338cb50e4cf08c58cb82b6d33b6d5df9fb1b.tar.gz
rneovim-442d338cb50e4cf08c58cb82b6d33b6d5df9fb1b.tar.bz2
rneovim-442d338cb50e4cf08c58cb82b6d33b6d5df9fb1b.zip
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
-rw-r--r--runtime/lua/vim/uri.lua2
-rw-r--r--test/functional/lua/uri_spec.lua8
2 files changed, 9 insertions, 1 deletions
diff --git a/runtime/lua/vim/uri.lua b/runtime/lua/vim/uri.lua
index b4e4098b91..6323f61256 100644
--- a/runtime/lua/vim/uri.lua
+++ b/runtime/lua/vim/uri.lua
@@ -15,7 +15,7 @@ local PATTERNS = {
rfc2396 = "^A-Za-z0-9%-_.!~*'()",
-- RFC 2732
-- https://tools.ietf.org/html/rfc2732
- rfc2732 = "^A-Za-z0-9%-_.!~*'()[]",
+ rfc2732 = "^A-Za-z0-9%-_.!~*'()%[%]",
-- RFC 3986
-- https://tools.ietf.org/html/rfc3986#section-2.2
rfc3986 = "^A-Za-z0-9%-._~!$&'()*+,;=:@/",
diff --git a/test/functional/lua/uri_spec.lua b/test/functional/lua/uri_spec.lua
index 258b96bc43..d706f8b78b 100644
--- a/test/functional/lua/uri_spec.lua
+++ b/test/functional/lua/uri_spec.lua
@@ -252,4 +252,12 @@ describe('URI methods', function()
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)