summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/vim
diff options
context:
space:
mode:
authorRoss Burton <ross@burtonini.com>2021-11-30 16:53:12 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-12-01 16:23:45 +0000
commit3eecf843e7f9462d743dc766ba25cfaa5f48b3e0 (patch)
tree863a06ba437a4de927f5854b55cd4195589a3da2 /meta/recipes-support/vim
parent7d2b8ac293c092491eb6a547728a4a687e4b93b1 (diff)
downloadpoky-3eecf843e7f9462d743dc766ba25cfaa5f48b3e0.tar.gz
vim: fix CVE-2021-3968 and CVE-2021-3973
Backport a fix for -3972, and whitelist -3968: it isn't valid as it fixes a bug which was introduced after 8.2. (From OE-Core rev: bec5caadfb53638748d8c41ce7230c2bf7808d27) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-support/vim')
-rw-r--r--meta/recipes-support/vim/files/0002-patch-8.2.3611-crash-when-using-CTRL-W-f-without-fin.patch92
-rw-r--r--meta/recipes-support/vim/vim.inc4
2 files changed, 96 insertions, 0 deletions
diff --git a/meta/recipes-support/vim/files/0002-patch-8.2.3611-crash-when-using-CTRL-W-f-without-fin.patch b/meta/recipes-support/vim/files/0002-patch-8.2.3611-crash-when-using-CTRL-W-f-without-fin.patch
new file mode 100644
index 0000000000..58d3442677
--- /dev/null
+++ b/meta/recipes-support/vim/files/0002-patch-8.2.3611-crash-when-using-CTRL-W-f-without-fin.patch
@@ -0,0 +1,92 @@
1CVE: CVE-2021-3973
2Upstream-Status: Backport
3Signed-off-by: Ross Burton <ross.burton@arm.com>
4
5From b6154e9f530544ddc3130d981caae0dabc053757 Mon Sep 17 00:00:00 2001
6From: Bram Moolenaar <Bram@vim.org>
7Date: Wed, 17 Nov 2021 18:00:31 +0000
8Subject: [PATCH] patch 8.2.3611: crash when using CTRL-W f without finding a
9 file name Problem: Crash when using CTRL-W f without finding
10 a file name. Solution: Bail out when the file name length is zero.
11
12---
13 src/findfile.c | 8 ++++++++
14 src/normal.c | 6 ++++--
15 src/testdir/test_visual.vim | 8 ++++++++
16 src/version.c | 2 ++
17 4 files changed, 22 insertions(+), 2 deletions(-)
18
19diff --git a/src/findfile.c b/src/findfile.c
20index dba547da1..5764fd7b8 100644
21--- a/src/findfile.c
22+++ b/src/findfile.c
23@@ -1727,6 +1727,9 @@ find_file_in_path_option(
24 proc->pr_WindowPtr = (APTR)-1L;
25 # endif
26
27+ if (len == 0)
28+ return NULL;
29+
30 if (first == TRUE)
31 {
32 // copy file name into NameBuff, expanding environment variables
33@@ -2094,7 +2097,12 @@ find_file_name_in_path(
34 int c;
35 # if defined(FEAT_FIND_ID) && defined(FEAT_EVAL)
36 char_u *tofree = NULL;
37+# endif
38
39+ if (len == 0)
40+ return NULL;
41+
42+# if defined(FEAT_FIND_ID) && defined(FEAT_EVAL)
43 if ((options & FNAME_INCL) && *curbuf->b_p_inex != NUL)
44 {
45 tofree = eval_includeexpr(ptr, len);
46diff --git a/src/normal.c b/src/normal.c
47index 7cb959257..f0084f2ac 100644
48--- a/src/normal.c
49+++ b/src/normal.c
50@@ -3778,8 +3778,10 @@ get_visual_text(
51 *pp = ml_get_pos(&VIsual);
52 *lenp = curwin->w_cursor.col - VIsual.col + 1;
53 }
54- if (has_mbyte)
55- // Correct the length to include the whole last character.
56+ if (**pp == NUL)
57+ *lenp = 0;
58+ if (has_mbyte && *lenp > 0)
59+ // Correct the length to include all bytes of the last character.
60 *lenp += (*mb_ptr2len)(*pp + (*lenp - 1)) - 1;
61 }
62 reset_VIsual_and_resel();
63diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
64index ae281238e..0705fdb57 100644
65--- a/src/testdir/test_visual.vim
66+++ b/src/testdir/test_visual.vim
67@@ -894,4 +894,12 @@ func Test_block_insert_replace_tabs()
68 bwipe!
69 endfunc
70
71+func Test_visual_block_ctrl_w_f()
72+ " Emtpy block selected in new buffer should not result in an error.
73+ au! BufNew foo sil norm f
74+ edit foo
75+
76+ au! BufNew
77+endfunc
78+
79 " vim: shiftwidth=2 sts=2 expandtab
80diff --git a/src/version.c b/src/version.c
81index 52be3c39d..59a314b3a 100644
82--- a/src/version.c
83+++ b/src/version.c
84@@ -742,6 +742,8 @@ static char *(features[]) =
85
86 static int included_patches[] =
87 { /* Add new patch number below this line */
88+/**/
89+ 3611,
90 /**/
91 3582,
92 /**/
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index d0957bfeae..6cdf157cb6 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -25,6 +25,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
25 file://0005-patch-8.2.3564-invalid-memory-access-when-scrolling-.patch \ 25 file://0005-patch-8.2.3564-invalid-memory-access-when-scrolling-.patch \
26 file://0001-patch-8.2.3581-reading-character-past-end-of-line.patch \ 26 file://0001-patch-8.2.3581-reading-character-past-end-of-line.patch \
27 file://0002-patch-8.2.3582-reading-uninitialized-memory-when-giv.patch \ 27 file://0002-patch-8.2.3582-reading-uninitialized-memory-when-giv.patch \
28 file://0002-patch-8.2.3611-crash-when-using-CTRL-W-f-without-fin.patch \
28 " 29 "
29 30
30SRCREV = "98056533b96b6b5d8849641de93185dd7bcadc44" 31SRCREV = "98056533b96b6b5d8849641de93185dd7bcadc44"
@@ -32,6 +33,9 @@ SRCREV = "98056533b96b6b5d8849641de93185dd7bcadc44"
32# Do not consider .z in x.y.z, as that is updated with every commit 33# Do not consider .z in x.y.z, as that is updated with every commit
33UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0" 34UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0"
34 35
36# CVE-2021-3968 is related to an issue which was introduced after 8.2, this can be removed after 8.3.
37CVE_CHECK_WHITELIST += "CVE-2021-3968"
38
35S = "${WORKDIR}/git" 39S = "${WORKDIR}/git"
36 40
37VIMDIR = "vim${@d.getVar('PV').split('.')[0]}${@d.getVar('PV').split('.')[1]}" 41VIMDIR = "vim${@d.getVar('PV').split('.')[0]}${@d.getVar('PV').split('.')[1]}"