vim-patch:9.0.0060: accessing uninitialized memory when completing long line

Problem:    Accessing uninitialized memory when completing long line.
Solution:   Terminate string with NUL.
b9e717367c
This commit is contained in:
zeertzjq
2022-08-24 21:44:37 +08:00
parent 5d1f0c3eca
commit 6680002169
2 changed files with 8 additions and 0 deletions

View File

@@ -582,6 +582,7 @@ static char_u *ins_compl_infercase_gettext(char_u *str, int char_len, int compl_
// getting to six bytes from the edge of IObuff switch to using a
// growarray. Add the character in the next round.
ga_grow(&gap, IOSIZE);
*p = NUL;
STRCPY(gap.ga_data, IObuff);
gap.ga_len = (int)STRLEN(IObuff);
} else {

View File

@@ -965,6 +965,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