summaryrefslogtreecommitdiffstats
path: root/debian/patches/CVE-2022-0368.patch
blob: 23b8f916570b9b60a238926cb6f484363b0a3250 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
From: Markus Koschany <apo@debian.org>
Date: Mon, 24 Oct 2022 00:59:40 +0200
Subject: CVE-2022-0368

Origin: https://github.com/vim/vim/commit/8d02ce1ed75d008c34a5c9aaa51b67cbb9d33baa
---
 src/testdir/test_visual.vim | 14 ++++++++++++++
 src/undo.c                  |  2 ++
 2 files changed, 16 insertions(+)

diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index e361f97..1454877 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -428,3 +428,17 @@ func Test_visual_ex_copy_line()
   bwipe!
 endfunc
 
+" CVE-2022-0368
+func Test_visual_undo_deletes_last_line()
+  new
+  call setline(1, ["aaa", "ccc", "dyd"])
+  set undolevels=100
+  exe "normal obbbbbbbbbxbb\<Esc>"
+ set undolevels=100
+ /y
+ exe "normal ggvjfxO"
+  undo
+ normal gNU
+ bwipe!
+endfunc
+
diff --git a/src/undo.c b/src/undo.c
index 6b6dd47..6da9c1a 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -2965,6 +2965,8 @@ u_undo_end(
 	}
     }
 #endif
+    if (VIsual_active)
+	check_pos(curbuf, &VIsual);
 
     smsg_attr_keep(0, _("%ld %s; %s #%ld  %s"),
 	    u_oldcount < 0 ? -u_oldcount : u_oldcount,