patch 9.0.0060: accessing uninitialized memory when completing long line

Problem:    Accessing uninitialized memory when completing long line.
Solution:   Terminate string with NUL.
This commit is contained in:
Bram Moolenaar
2022-07-23 06:53:08 +01:00
parent bb404f5ad5
commit b9e717367c
3 changed files with 10 additions and 0 deletions

View File

@ -642,6 +642,7 @@ ins_compl_infercase_gettext(
// growarray. Add the character in the next round.
if (ga_grow(&gap, IOSIZE) == FAIL)
return (char_u *)"[failed]";
*p = NUL;
STRCPY(gap.ga_data, IObuff);
gap.ga_len = (int)STRLEN(IObuff);
}

View File

@ -2108,6 +2108,13 @@ func Test_infercase_very_long_line()
exe "normal 2Go\<C-X>\<C-L>\<Esc>"
call assert_equal(longLine, getline(3))
" check that the too long text is NUL terminated
%del
norm o
norm 1987ax
exec "norm ox\<C-X>\<C-L>"
call assert_equal(repeat('x', 1987), getline(3))
bwipe!
set noic noinfercase
endfunc

View File

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