Mercurial > vim
view runtime/spell/ca/main.aap @ 33879:d418c82f02a4 v9.0.2149
patch 9.0.2149: [security]: use-after-free in exec_instructions()
Commit: https://github.com/vim/vim/commit/5dd41d4b6370b7b7d09d691f9252b3899c66102a
Author: Christian Brabandt <cb@256bit.org>
Date: Mon Dec 4 22:52:23 2023 +0100
patch 9.0.2149: [security]: use-after-free in exec_instructions()
Problem: [security]: use-after-free in exec_instructions()
Solution: get tv pointer again
[security]: use-after-free in exec_instructions()
exec_instructions may access freed memory, if the GA_GROWS_FAILS()
re-allocates memory. When this happens, the typval tv may still point to
now already freed memory. So let's get that pointer again and compare it
with tv. If those two pointers differ, tv is now invalid and we have to
refresh the tv pointer.
closes: #13621
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Dec 2023 15:16:17 +0100 |
parents | b9e314fe473f |
children |
line wrap: on
line source
# Aap recipe for Catelan (Spain) Vim spell files. # Use a freshly compiled Vim if it exists. @if os.path.exists('../../../src/vim'): VIM = ../../../src/vim @else: :progsearch VIM vim SPELLDIR = .. FILES = ca_ES.aff ca_ES.dic all: $SPELLDIR/ca.latin1.spl $SPELLDIR/ca.utf-8.spl ../README_ca.txt $SPELLDIR/ca.latin1.spl : $FILES :sys env LANG=ca_ES.ISO8859-1 $VIM -u NONE -e -c "mkspell! $SPELLDIR/ca ca_ES" -c q $SPELLDIR/ca.utf-8.spl : $FILES :sys env LANG=ca_ES.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/ca ca_ES" -c q ../README_ca.txt : README_ca_ES.txt :copy $source $target # # Fetching the files from OpenOffice.org. # OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries :attr {fetch = $OODIR/%file%} ca_ES.zip # The files don't depend on the .zip file so that we can delete it. # Only download the zip file if the targets don't exist. # Make sure the files are in Unix fileformat ca_ES.aff ca_ES.dic: {buildcheck=} :assertpkg unzip patch :fetch ca_ES.zip :sys $UNZIP ca_ES.zip :delete ca_ES.zip :sys $VIM ca_ES.aff -u NONE -c "set ff=unix" -c "update" -c q :sys $VIM ca_ES.dic -u NONE -c "set ff=unix" -c "update" -c q @if not os.path.exists('ca_ES.orig.aff'): :copy ca_ES.aff ca_ES.orig.aff @if not os.path.exists('ca_ES.orig.dic'): :copy ca_ES.dic ca_ES.orig.dic @if os.path.exists('ca_ES.diff'): :sys patch <ca_ES.diff # Generate diff files, so that others can get the OpenOffice files and apply # the diffs to get the Vim versions. diff: :assertpkg diff :sys {force} diff -a -C 1 ca_ES.orig.aff ca_ES.aff >ca_ES.diff :sys {force} diff -a -C 1 ca_ES.orig.dic ca_ES.dic >>ca_ES.diff # Check for updated OpenOffice spell files. When there are changes the # ".new.aff" and ".new.dic" files are left behind for manual inspection. check: :assertpkg unzip diff :fetch ca_ES.zip :mkdir tmp :cd tmp @try: @import stat :sys $UNZIP ../ca_ES.zip :sys {force} diff ../ca_ES.orig.aff ca_ES.aff >d @if os.stat('d')[stat.ST_SIZE] > 0: :copy ca_ES.aff ../ca_ES.new.aff :sys {force} diff ../ca_ES.orig.dic ca_ES.dic >d @if os.stat('d')[stat.ST_SIZE] > 0: :copy ca_ES.dic ../ca_ES.new.dic @finally: :cd .. :delete {r}{f}{q} tmp :delete ca_ES.zip # vim: set sts=4 sw=4 :