mirror of
https://git.yoctoproject.org/poky
synced 2026-10-22 07:08:19 +00:00
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:
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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user