diff options
| author | Hitendra Prajapati <hprajapati@mvista.com> | 2026-04-08 17:01:35 +0530 |
|---|---|---|
| committer | Paul Barker <paul@pbarker.dev> | 2026-04-10 11:53:18 +0100 |
| commit | 4a4e0944fa5cc9ed1bc63949821aa0a042916a27 (patch) | |
| tree | 7f9ff6a6a3f7a6fb6d37eb1578bf3b9de3914113 /meta/recipes-support | |
| parent | c1c8289d56ef5e185be7e49504573b6c6cae54f7 (diff) | |
| download | poky-4a4e0944fa5cc9ed1bc63949821aa0a042916a27.tar.gz | |
vim: Fix CVE-2026-28419
Pick patch from [1] also mentioned in [2]
[1] https://github.com/vim/vim/commit/9b7dfa2948c9e1e5e32a5812812d580c7879f4a0
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-28419
(From OE-Core rev: 550a2a5e2d3b5aa08f50b89a0127187c3f76854c)
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>
Diffstat (limited to 'meta/recipes-support')
| -rw-r--r-- | meta/recipes-support/vim/files/CVE-2026-28419.patch | 86 | ||||
| -rw-r--r-- | meta/recipes-support/vim/vim.inc | 1 |
2 files changed, 87 insertions, 0 deletions
diff --git a/meta/recipes-support/vim/files/CVE-2026-28419.patch b/meta/recipes-support/vim/files/CVE-2026-28419.patch new file mode 100644 index 0000000000..91100a7e91 --- /dev/null +++ b/meta/recipes-support/vim/files/CVE-2026-28419.patch | |||
| @@ -0,0 +1,86 @@ | |||
| 1 | From 9b7dfa2948c9e1e5e32a5812812d580c7879f4a0 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Christian Brabandt <cb@256bit.org> | ||
| 3 | Date: Mon, 23 Feb 2026 19:35:25 +0000 | ||
| 4 | Subject: [PATCH] patch 9.2.0075: [security]: Buffer underflow with emacs tag | ||
| 5 | file | ||
| 6 | |||
| 7 | Problem: When parsing a malformed Emacs-style tags file, a 1-byte | ||
| 8 | heap-buffer-underflow read occurs if the 0x7f delimiter | ||
| 9 | appears at the very beginning of a line. This happens | ||
| 10 | because the code attempts to scan backward for a tag | ||
| 11 | name from the delimiter without checking if space exists. | ||
| 12 | (ehdgks0627, un3xploitable) | ||
| 13 | Solution: Add a check to ensure the delimiter (p_7f) is not at the | ||
| 14 | start of the buffer (lbuf) before attempting to isolate | ||
| 15 | the tag name. | ||
| 16 | |||
| 17 | GitHub Advisory: | ||
| 18 | https://github.com/vim/vim/security/advisories/GHSA-xcc8-r6c5-hvwv | ||
| 19 | |||
| 20 | Signed-off-by: Christian Brabandt <cb@256bit.org> | ||
| 21 | |||
| 22 | |||
| 23 | CVE: CVE-2026-28419 | ||
| 24 | Upstream-Status: Backport [https://github.com/vim/vim/commit/9b7dfa2948c9e1e5e32a5812812d580c7879f4a0] | ||
| 25 | Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com> | ||
| 26 | --- | ||
| 27 | src/tag.c | 3 +++ | ||
| 28 | src/testdir/test_taglist.vim | 16 ++++++++++++++++ | ||
| 29 | src/version.c | 2 ++ | ||
| 30 | 3 files changed, 21 insertions(+) | ||
| 31 | |||
| 32 | diff --git a/src/tag.c b/src/tag.c | ||
| 33 | index 45af67f20d..d3a73997bb 100644 | ||
| 34 | --- a/src/tag.c | ||
| 35 | +++ b/src/tag.c | ||
| 36 | @@ -2023,6 +2023,9 @@ etag_fail: | ||
| 37 | } | ||
| 38 | else // second format: isolate tagname | ||
| 39 | { | ||
| 40 | + if (p_7f == lbuf) | ||
| 41 | + goto etag_fail; | ||
| 42 | + | ||
| 43 | // find end of tagname | ||
| 44 | for (p = p_7f - 1; !vim_iswordc(*p); --p) | ||
| 45 | if (p == lbuf) | ||
| 46 | diff --git a/src/testdir/test_taglist.vim b/src/testdir/test_taglist.vim | ||
| 47 | index 506e64f7ae..42ecc4b76e 100644 | ||
| 48 | --- a/src/testdir/test_taglist.vim | ||
| 49 | +++ b/src/testdir/test_taglist.vim | ||
| 50 | @@ -316,4 +316,20 @@ func Test_evil_emacs_tagfile() | ||
| 51 | set tags& | ||
| 52 | endfunc | ||
| 53 | |||
| 54 | +" This used to crash Vim due to a heap-buffer-underflow | ||
| 55 | +func Test_emacs_tagfile_underflow() | ||
| 56 | + CheckFeature emacs_tags | ||
| 57 | + " The sequence from the crash artifact: | ||
| 58 | + let lines = [ | ||
| 59 | + \ "\x0c\xff\xffT\x19\x8a", | ||
| 60 | + \ "\x19\x19\x0dtags\x19\x19\x19\x00\xff\xff\xff", | ||
| 61 | + \ "\x7f3\x0c" | ||
| 62 | + \ ] | ||
| 63 | + call writefile(lines, 'Xtags', 'D') | ||
| 64 | + set tags=Xtags | ||
| 65 | + call assert_fails(':tag a', 'E431:') | ||
| 66 | + | ||
| 67 | + set tags& | ||
| 68 | +endfunc | ||
| 69 | + | ||
| 70 | " vim: shiftwidth=2 sts=2 expandtab | ||
| 71 | diff --git a/src/version.c b/src/version.c | ||
| 72 | index 7d265ab641..4f47ec2688 100644 | ||
| 73 | --- a/src/version.c | ||
| 74 | +++ b/src/version.c | ||
| 75 | @@ -724,6 +724,8 @@ static char *(features[]) = | ||
| 76 | |||
| 77 | static int included_patches[] = | ||
| 78 | { /* Add new patch number below this line */ | ||
| 79 | +/**/ | ||
| 80 | + 1686, | ||
| 81 | /**/ | ||
| 82 | 1685, | ||
| 83 | /**/ | ||
| 84 | -- | ||
| 85 | 2.50.1 | ||
| 86 | |||
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc index 713e277936..b74c4a49c1 100644 --- a/meta/recipes-support/vim/vim.inc +++ b/meta/recipes-support/vim/vim.inc | |||
| @@ -20,6 +20,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \ | |||
| 20 | file://CVE-2026-25749.patch \ | 20 | file://CVE-2026-25749.patch \ |
| 21 | file://CVE-2026-26269.patch \ | 21 | file://CVE-2026-26269.patch \ |
| 22 | file://CVE-2026-28418.patch \ | 22 | file://CVE-2026-28418.patch \ |
| 23 | file://CVE-2026-28419.patch \ | ||
| 23 | " | 24 | " |
| 24 | 25 | ||
| 25 | PV .= ".1683" | 26 | PV .= ".1683" |
