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 cols;
colnr_T curswant; colnr_T curswant;
// Check if the buffer is the current buffer. // Check if the buffer is the current buffer and not using a string.
if (rex.reg_buf != curbuf || VIsual.lnum == 0) if (rex.reg_buf != curbuf || VIsual.lnum == 0 || rex.reg_maxline == 0)
return FALSE; return FALSE;
if (VIsual_active) if (VIsual_active)

View File

@@ -1,6 +1,7 @@
" Tests for :help " Tests for :help
source check.vim source check.vim
import './vim9.vim' as v9
func Test_help_restore_snapshot() func Test_help_restore_snapshot()
help help
@@ -168,5 +169,15 @@ func Test_help_long_argument()
endtry endtry
endfunc 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 " vim: shiftwidth=2 sts=2 expandtab

View File

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