From caf73dcfade0a435ea3f989285b43f07c40c9948 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 26 Oct 2020 21:39:13 +0100 Subject: [PATCH] patch 8.2.1910: reading past the end of the command line Problem: Reading past the end of the command line. Solution: Check for NUL. (closes #7204) --- src/ex_docmd.c | 5 +++-- src/testdir/test_edit.vim | 7 +++++++ src/version.c | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 5e9eeb78f..97d4b421d 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 6a84b1c8c..de3e3a161 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 ac8155a13..04bfc7db8 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1910, /**/ 1909, /**/ -- 2.40.0