0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.4440: crash with specific regexp pattern and string

Problem:    Crash with specific regexp pattern and string.
Solution:   Stop at the start of the string.
This commit is contained in:
Bram Moolenaar
2022-02-22 13:37:31 +00:00
parent 1349bd712c
commit 6456fae9ba
3 changed files with 17 additions and 2 deletions

View File

@@ -4615,6 +4615,11 @@ regmatch(
if (rex.input == rex.line)
{
// backup to last char of previous line
if (rex.lnum == 0)
{
status = RA_NOMATCH;
break;
}
--rex.lnum;
rex.line = reg_getline(rex.lnum);
// Just in case regrepeat() didn't count

View File

@@ -508,7 +508,6 @@ endfunc
" Check that [[:upper:]] matches for automatic engine
func Test_match_char_class_upper()
new
let _engine=&regexpengine
" Test 1: [[:upper:]]\{2,\}
set regexpengine=0
@@ -549,7 +548,7 @@ func Test_match_char_class_upper()
call assert_equal(4, searchcount().total, 'TEST 3 lower')
" clean up
let &regexpengine=_engine
set regexpengine=0
bwipe!
endfunc
@@ -561,4 +560,13 @@ func Test_match_invalid_byte()
call delete('Xinvalid')
endfunc
func Test_match_too_complicated()
set regexpengine=1
exe "vsplit \xeb\xdb\x99"
silent! buf \&\zs*\zs*0
bwipe!
set regexpengine=0
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 */
/**/
4440,
/**/
4439,
/**/