56 lines
1.8 KiB
Diff
56 lines
1.8 KiB
Diff
From 54e5fed6d27b747ff152cdb6edfb72ff60e70939 Mon Sep 17 00:00:00 2001
|
||
From: Bram Moolenaar <Bram@vim.org>
|
||
Date: Mon, 4 Jul 2022 13:37:07 +0100
|
||
Subject: [PATCH] patch 9.0.0035: spell dump may go beyond end of an array
|
||
|
||
Problem: Spell dump may go beyond end of an array.
|
||
Solution: Limit the word length.
|
||
---
|
||
src/spell.c | 5 +++--
|
||
src/testdir/test_spell.vim | 12 ++++++++++++
|
||
2 files changed, 15 insertions(+), 2 deletions(-)
|
||
|
||
diff --git a/src/spell.c b/src/spell.c
|
||
index d866a2d..24abce4 100644
|
||
--- a/src/spell.c
|
||
+++ b/src/spell.c
|
||
@@ -3996,9 +3996,10 @@ spell_dump_compl(
|
||
n = arridx[depth] + curi[depth];
|
||
++curi[depth];
|
||
c = byts[n];
|
||
- if (c == 0)
|
||
+ if (c == 0 || depth >= MAXWLEN - 1)
|
||
{
|
||
- // End of word, deal with the word.
|
||
+ // End of word or reached maximum length, deal with the
|
||
+ // word.
|
||
// Don't use keep-case words in the fold-case tree,
|
||
// they will appear in the keep-case tree.
|
||
// Only use the word when the region matches.
|
||
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
|
||
index d3f56d8..a291eb5 100644
|
||
--- a/src/testdir/test_spell.vim
|
||
+++ b/src/testdir/test_spell.vim
|
||
@@ -285,6 +285,18 @@ func Test_spellreall()
|
||
bwipe!
|
||
endfunc
|
||
|
||
+func Test_spell_dump_word_length()
|
||
+ " this was running over MAXWLEN
|
||
+ new
|
||
+ noremap 0 0a0zW0000000
|
||
+ sil! norm 0z=0
|
||
+ sil norm 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||
+ sil! norm 0z=0
|
||
+
|
||
+ bwipe!
|
||
+ nunmap 0
|
||
+endfunc
|
||
+
|
||
" Test spellsuggest({word} [, {max} [, {capital}]])
|
||
func Test_spellsuggest()
|
||
" Verify suggestions are given even when spell checking is not enabled.
|
||
--
|
||
1.8.3.1
|
||
|