1
0
forked from aniani/vim

patch 8.2.4261: accessing invalid memory in a regular expression

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.
This commit is contained in:
Bram Moolenaar
2022-01-30 16:42:56 +00:00
parent 848faddb87
commit 679d66c2d2
3 changed files with 15 additions and 2 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4261,
/**/
4260,
/**/