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.
|
// growarray. Add the character in the next round.
|
||||||
if (ga_grow(&gap, IOSIZE) == FAIL)
|
if (ga_grow(&gap, IOSIZE) == FAIL)
|
||||||
return (char_u *)"[failed]";
|
return (char_u *)"[failed]";
|
||||||
|
*p = NUL;
|
||||||
STRCPY(gap.ga_data, IObuff);
|
STRCPY(gap.ga_data, IObuff);
|
||||||
gap.ga_len = (int)STRLEN(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>"
|
exe "normal 2Go\<C-X>\<C-L>\<Esc>"
|
||||||
call assert_equal(longLine, getline(3))
|
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!
|
bwipe!
|
||||||
set noic noinfercase
|
set noic noinfercase
|
||||||
endfunc
|
endfunc
|
||||||
|
|||||||
@ -735,6 +735,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 */
|
||||||
|
/**/
|
||||||
|
60,
|
||||||
/**/
|
/**/
|
||||||
59,
|
59,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user