diff --git a/vim-9.0.2092-CVE-2026-73073.patch b/vim-9.0.2092-CVE-2026-73073.patch new file mode 100644 index 0000000000000000000000000000000000000000..f9ea136971e9b32feb729d08a5579e3e03373215 --- /dev/null +++ b/vim-9.0.2092-CVE-2026-73073.patch @@ -0,0 +1,47 @@ +From 2f628d8104958fa7421664f792ca6d4f7a39a10f Mon Sep 17 00:00:00 2001 +From: Yasuhiro Matsumoto +Date: Fri, 17 Jul 2026 09:11:42 +0900 +Subject: [PATCH] patch 9.2.0845: [security]: arbitrary Ex command execution + during C omni-completion + +Problem: [security]: arbitrary Ex command execution during C + omni-completion (Threonine) +Solution: Match tags typeref literally to block Ex command injection + (Yasuhiro Matsumoto). + +Escaping only "/" and "\" left the typeref able to break out of the +:vimgrep pattern without a "/": an unclosed "[" makes vimgrep's pattern +skipping fail, and the parser then treats a following "|" as a command +separator, so the tag value runs as Ex commands during C omni-completion. +Match the field literally with \V so no regex metacharacter can affect +pattern parsing. + +Github Security Advisory: +https://github.com/vim/vim/security/advisories/GHSA-cx73-phcg-3j5g + +Signed-off-by: Yasuhiro Matsumoto +Signed-off-by: Christian Brabandt + +Adapted-by: PkgAgent/deepseek-v4 (modified to adapt to opencloudos-stream) + +--- + runtime/autoload/ccomplete.vim | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim +index 7096dcf..80e4f13 100644 +--- a/runtime/autoload/ccomplete.vim ++++ b/runtime/autoload/ccomplete.vim +@@ -559,8 +559,11 @@ def StructMembers( # {{{1 + endif + if !cached + while 1 ++ # Match "typename" literally (\V): escaping alone is not enough, as e.g. ++ # an unclosed "[" makes vimgrep's pattern skipping fail and the rest of ++ # the tag value is then parsed as Ex commands. + execute 'silent! keepjumps noautocmd ' +- .. n .. 'vimgrep ' .. '/\t' .. typename .. '\(\t\|$\)/j ' ++ .. n .. 'vimgrep ' .. '/\t\V' .. escape(typename, '/\') .. '\m\(\t\|$\)/j ' + .. fnames + + qflist = getqflist() diff --git a/vim.spec b/vim.spec index d8c3ebe110bc0133121d7d29644d59b730180872..330949d6390d1b707ce41be95c48ddf31bd29548 100644 --- a/vim.spec +++ b/vim.spec @@ -28,7 +28,7 @@ Summary: The VIM editor URL: http://www.vim.org/ Name: vim Version: 9.0.2092 -Release: 23%{?dist} +Release: 24%{?dist} License: Vim and MIT and GPL v2+ Source0: https://github.com/vim/vim/archive/refs/tags/v%{version}.tar.gz Source1: virc @@ -128,6 +128,8 @@ Patch0046: vim-9.0.2092-CVE-2026-73074.patch Patch0047: vim-9.0.2092-CVE-2026-73071.patch # CVE-2026-73072 Patch0048: vim-9.0.2092-CVE-2026-73072.patch +# CVE-2026-73073 +Patch0049: vim-9.0.2092-CVE-2026-73073.patch Patch3000: vim-7.3-manpage-typo-668894-675480.patch Patch3001: vim-manpagefixes-948566.patch @@ -929,6 +931,10 @@ LC_ALL=en_US.UTF-8 make test || echo "Warning: tests have failure." %changelog +* Fri Aug 28 2026 PkgAgent Robot - 9.0.2092-24 +- [Type] security +- [DESC] Fix CVE-2026-73073: arbitrary Ex command execution via unescaped typeref/typename during C omni-completion + * Fri Aug 21 2026 PkgAgent Robot - 9.0.2092-23 - [Type] security - [DESC] Fix CVE-2026-43961, CVE-2026-73074, CVE-2026-73071, CVE-2026-73072