vim: Fix for CVE-2026-73074

Pick the patch from [1], also referenced in the NVD report [2].

[1] https://github.com/vim/vim/commit/a9336b476fd1a182e3f79b5f83c0ffb04f8a922b
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-73074

(From OE-Core rev: 61f5f1268344dac4696f6390e4a81b6ed324fd34)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
This commit is contained in:
Hitendra Prajapati authored and Paul Barker committed 2026-09-28 10:17:42 +01:00
1 parent f2fcd1c16c
commit 4c5339109d
2 files changed
+102

No files matched your search

@@ -0,0 +1,101 @@
From a9336b476fd1a182e3f79b5f83c0ffb04f8a922b Mon Sep 17 00:00:00 2001
From: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Date: Thu, 23 Jul 2026 20:14:13 +0000
Subject: [PATCH] patch 9.2.0841: [security]: heap overflow when adding > 65535
text properties
Problem: [security]: heap overflow when adding > 65535 text properties
(Wang1rrr).
Solution: Verify that the number of text properties falls within the
limit (Yasuhiro Matsumoto).
Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-hm4g-pjfx-m27j
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
CVE: CVE-2026-73074
Upstream-Status: Backport [https://github.com/vim/vim/commit/a9336b476fd1a182e3f79b5f83c0ffb04f8a922b]
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
---
src/errors.h | 4 ++++
src/po/vim.pot | 3 +++
src/testdir/test_textprop.vim | 18 ++++++++++++++++++
src/textprop.c | 7 +++++++
4 files changed, 32 insertions(+)
diff --git a/src/errors.h b/src/errors.h
index 01ed16a035..5354e85f25 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -3795,3 +3795,7 @@ EXTERN char e_socket_server_failed_connecting[]
EXTERN char e_socket_server_unavailable[]
INIT(= N_("E1567: Cannot start socket server, socket path is unavailable"));
#endif
+#ifdef FEAT_PROP_POPUP
+EXTERN char e_too_many_text_properties_on_a_single_line[]
+ INIT(= N_("E1580: Too many text properties on a single line"));
+#endif
diff --git a/src/po/vim.pot b/src/po/vim.pot
index be79cf0dab..100344e270 100644
--- a/src/po/vim.pot
+++ b/src/po/vim.pot
@@ -8838,6 +8838,9 @@ msgstr ""
msgid "E1567: Cannot start socket server, socket path is unavailable"
msgstr ""
+msgid "E1580: Too many text properties on a single line"
+msgstr ""
+
#. type of cmdline window or 0
#. result of cmdline window or 0
#. buffer of cmdline window or NULL
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index b5c9f63f65..5a69ca75e7 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -4781,4 +4781,22 @@ func Test_textprop_materialize_list()
call assert_equal([], prop_list(1, #{ids: 3->range()}))
endfunc
+" Adding more than 65535 text properties to one line must be rejected instead
+" of wrapping the uint16_t property count and overflowing the allocation.
+func Test_prop_add_over_uint16_max()
+ CheckNotAsan
+ CheckNotValgrind
+ new
+ call setline(1, 'x')
+ call prop_type_add('overflow', {})
+ for _ in range(0xffff)
+ call prop_add(1, 1, {'type': 'overflow', 'length': 0})
+ endfor
+ call assert_equal(0xffff, prop_list(1)->len())
+ call assert_fails("call prop_add(1, 1, {'type': 'overflow', 'length': 0})", 'E1580:')
+ call assert_equal(0xffff, prop_list(1)->len())
+ call prop_type_delete('overflow')
+ bwipe!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/textprop.c b/src/textprop.c
index a06605d3dd..1f06615dbc 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -240,6 +240,13 @@ prop_add_one(
proplen = get_text_props(buf, lnum, &props, TRUE);
textlen = buf->b_ml.ml_line_len - proplen * sizeof(textprop_T);
+ // prop_count is a uint16_t; stop before proplen + 1 wraps to zero.
+ if (proplen >= 0xffff)
+ {
+ emsg(_(e_too_many_text_properties_on_a_single_line));
+ goto theend;
+ }
+
if (lnum == start_lnum)
col = start_col;
else
--
2.50.1
+1
View File
@@ -52,6 +52,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-57456.patch \
file://CVE-2026-73072.patch \
file://CVE-2026-73073.patch \
file://CVE-2026-73074.patch \
"
PV .= ".1683"