diff options
author | Jonny Kong <jonnykong1996@gmail.com> | 2024-12-11 08:48:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-11 05:48:17 -0800 |
commit | 442d338cb50e4cf08c58cb82b6d33b6d5df9fb1b (patch) | |
tree | 46fdc750f0e0d0d7566e9d00c77bb1a9696c1658 | |
parent | ff1791c9e59bccaee685a537e094f7d6bdc3b122 (diff) | |
download | rneovim-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.lua | 2 | ||||
-rw-r--r-- | test/functional/lua/uri_spec.lua | 8 |
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) |