summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-10-26 21:39:13 +0100
committerBram Moolenaar <Bram@vim.org>2020-10-26 21:39:13 +0100
commitcaf73dcfade0a435ea3f989285b43f07c40c9948 (patch)
treeae9c2d80671b11dd22ab7979e3969bdaee09ec6a
parentcb80aa2d53e56d3aba3b3c439fb467f29a750c5e (diff)
patch 8.2.1910: reading past the end of the command linev8.2.1910
Problem: Reading past the end of the command line. Solution: Check for NUL. (closes #7204)
-rw-r--r--src/ex_docmd.c5
-rw-r--r--src/testdir/test_edit.vim7
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 2 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 5e9eeb78fe..97d4b421da 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2958,8 +2958,7 @@ undo_cmdmod(cmdmod_T *cmod)
cmod->cmod_save_ei = NULL;
}
- if (cmod->cmod_filter_regmatch.regprog != NULL)
- vim_regfree(cmod->cmod_filter_regmatch.regprog);
+ vim_regfree(cmod->cmod_filter_regmatch.regprog);
if (cmod->cmod_save_msg_silent > 0)
{
@@ -4696,6 +4695,8 @@ separate_nextcmd(exarg_T *eap)
{
p += 2;
(void)skip_expr(&p, NULL);
+ if (*p == NUL) // stop at NUL after CTRL-V
+ break;
}
#endif
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 6a84b1c8c6..de3e3a1612 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -1832,4 +1832,11 @@ func Test_edit_browse()
bwipe!
endfunc
+func Test_read_invalid()
+ set encoding=latin1
+ " This was not properly checking for going past the end.
+ call assert_fails('r`=', 'E484')
+ set encoding=utf-8
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index ac8155a13b..04bfc7db83 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1910,
+/**/
1909,
/**/
1908,