diff options
| author | zeertzjq <zeertzjq@outlook.com> | 2026-05-08 07:03:20 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-07 23:03:20 +0000 |
| commit | 0976ce255bebb5d44d07bbda51233d7002588ae1 (patch) | |
| tree | 90aac6b7788992cc03897daf130336242d2f9b42 /runtime/plugin/python_setup.vim | |
| parent | aea9aeee7804449136e8a4e8abe73d07e0202713 (diff) | |
| download | rneovim-0976ce255bebb5d44d07bbda51233d7002588ae1.tar.gz rneovim-0976ce255bebb5d44d07bbda51233d7002588ae1.tar.bz2 rneovim-0976ce255bebb5d44d07bbda51233d7002588ae1.zip | |
vim-patch:9.2.0450: [security]: heap buffer overflow in spellfile.c read_compound() (#39660)
Problem: read_compound() in spellfile.c computes the size of the regex
pattern buffer using signed-int arithmetic on the attacker
controlled SN_COMPOUND sectionlen. With sectionlen=0x40000008
and UTF-8 encoding active the multiplication wraps to 27 while
the per-byte loop writes up to ~1B bytes, overflowing the heap.
Reachable when loading a crafted .spl file (e.g. via 'set spell'
after a modeline sets 'spelllang'). The cp/ap/crp allocations
have the same int + 1 overflow class (Daniel Cervera)
Solution: Use type size_t as buffer size and reject values larger than
COMPOUND_MAX_LEN (100000). Apply the same size_t treatment to
the cp/ap/crp allocations.
Github Advisory:
https://github.com/vim/vim/security/advisories/GHSA-q4jv-r9gj-6cwv
https://github.com/vim/vim/commit/92993329178cb1f72d700fff45ca86e1c2d369f8
Co-authored-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'runtime/plugin/python_setup.vim')
0 files changed, 0 insertions, 0 deletions