1
0
forked from aniani/vim

patch 9.0.0109: writing over the end of a buffer on stack

Problem:    Writing over the end of a buffer on stack when making list of
            spell suggestions.
Solution:   Make sure suggested word is not too long. (closes #10812)
This commit is contained in:
Bram Moolenaar
2022-07-30 11:39:57 +01:00
parent 5f6cae8b8a
commit 1eead4cf1d
3 changed files with 16 additions and 4 deletions

View File

@@ -592,15 +592,17 @@ spell_suggest(int count)
msg_scroll = TRUE;
for (i = 0; i < sug.su_ga.ga_len; ++i)
{
int el;
stp = &SUG(sug.su_ga, i);
// The suggested word may replace only part of the bad word, add
// the not replaced part.
// the not replaced part. But only when it's not getting too long.
vim_strncpy(wcopy, stp->st_word, MAXWLEN);
if (sug.su_badlen > stp->st_orglen)
el = sug.su_badlen - stp->st_orglen;
if (el > 0 && stp->st_wordlen + el <= MAXWLEN)
vim_strncpy(wcopy + stp->st_wordlen,
sug.su_badptr + stp->st_orglen,
sug.su_badlen - stp->st_orglen);
sug.su_badptr + stp->st_orglen, el);
vim_snprintf((char *)IObuff, IOSIZE, "%2d", i + 1);
#ifdef FEAT_RIGHTLEFT
if (cmdmsg_rl)