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:
@ -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);
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -735,6 +735,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
60,
|
||||
/**/
|
||||
59,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user