neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 442d338cb50e4cf08c58cb82b6d33b6d5df9fb1b
parent ff1791c9e59bccaee685a537e094f7d6bdc3b122
Author: Jonny Kong <jonnykong1996@gmail.com>
Date:   Wed, 11 Dec 2024 08:48:17 -0500

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
Diffstat:
Mruntime/lua/vim/uri.lua | 2+-
Mtest/functional/lua/uri_spec.lua | 8++++++++
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git 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 @@ -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)