diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-01-30 16:42:56 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-01-30 16:42:56 +0000 |
commit | 679d66c2d21dfe03d0f89b9a818b0aaebb4c3b87 (patch) | |
tree | c9b166bba7deb0ed0f4f7f8974f4bf3a7079cf4f | |
parent | 848faddb870f3ba4d84fcacd1cccb5cdbbfd9c41 (diff) |
patch 8.2.4261: accessing invalid memory in a regular expressionv8.2.4261
Problem: Accessing invalid memory when a regular expression checks the
Visual area while matching in a string.
Solution: Do not try matching the Visual area in a string.
-rw-r--r-- | src/regexp.c | 4 | ||||
-rw-r--r-- | src/testdir/test_help.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/regexp.c b/src/regexp.c index c9e781b4a6..9505765553 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -1267,8 +1267,8 @@ reg_match_visual(void) colnr_T cols; colnr_T curswant; - // Check if the buffer is the current buffer. - if (rex.reg_buf != curbuf || VIsual.lnum == 0) + // Check if the buffer is the current buffer and not using a string. + if (rex.reg_buf != curbuf || VIsual.lnum == 0 || rex.reg_maxline == 0) return FALSE; if (VIsual_active) diff --git a/src/testdir/test_help.vim b/src/testdir/test_help.vim index 3e358d6bbb..b8b9bbc78b 100644 --- a/src/testdir/test_help.vim +++ b/src/testdir/test_help.vim @@ -1,6 +1,7 @@ " Tests for :help source check.vim +import './vim9.vim' as v9 func Test_help_restore_snapshot() help @@ -168,5 +169,15 @@ func Test_help_long_argument() endtry endfunc +func Test_help_using_visual_match() + let lines =<< trim END + call setline(1, ' ') + /^ + exe "normal \<C-V>\<C-V>" + h5\%V] + END + call v9.CheckScriptFailure(lines, 'E149:') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index f696b30336..4946c3ee2e 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 */ /**/ + 4261, +/**/ 4260, /**/ 4259, |