Commit: patch 9.2.0043: crypt: Crash when reading an encrypted UTF-8 file

0 views
Skip to first unread message

Christian Brabandt

unread,
Feb 21, 2026, 1:01:44 PM (2 days ago) Feb 21
to vim...@googlegroups.com
patch 9.2.0043: crypt: Crash when reading an encrypted UTF-8 file

Commit: https://github.com/vim/vim/commit/f622af02709e85061e23175f75e04f0c3304387e
Author: Foxe Chen <chen...@gmail.com>
Date: Sat Feb 21 17:53:06 2026 +0000

patch 9.2.0043: crypt: Crash when reading an encrypted UTF-8 file

Problem: crypt: Crash when reading an encrypted UTF-8 file.
This happens because readfile() does not account for leftover
conversion bytes (conv_restlen) when reallocating and moving
the buffer after decryption (smss2022).
Solution: Include conv_restlen in the offset calculations and memmove
operations within readfile() (Foxe Chen).

fixes: #19425
closes: #19453

Signed-off-by: Foxe Chen <chen...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/Filelist b/Filelist
index 4adc69c80..b6414223f 100644
--- a/Filelist
+++ b/Filelist
@@ -223,6 +223,8 @@ SRC_ALL = \
src/testdir/samples/test000 \
src/testdir/samples/test_undo.txt.undo \
src/testdir/samples/testa.zip \
+ src/testdir/samples/crypt_utf8_test.txt \
+ src/testdir/samples/uncrypt_utf8_test.txt \
src/testdir/sautest/autoload/*.vim \
src/testdir/silent.wav \
src/testdir/test77a.com \
diff --git a/src/fileio.c b/src/fileio.c
index 5851d80b4..0ba9905c3 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1432,10 +1432,10 @@ retry:
break;
}

- mch_memmove(new_buffer, buffer, linerest);
+ mch_memmove(new_buffer, buffer, linerest + conv_restlen);
if (newptr != NULL)
- mch_memmove(new_buffer + linerest, newptr,
- decrypted_size);
+ mch_memmove(new_buffer + linerest + conv_restlen,
+ newptr, decrypted_size);
vim_free(newptr);
}

@@ -1445,7 +1445,7 @@ retry:
buffer = new_buffer;
new_buffer = NULL;
line_start = buffer;
- ptr = buffer + linerest;
+ ptr = buffer + linerest + conv_restlen;
real_size = size;
}
size = decrypted_size;
diff --git a/src/testdir/samples/crypt_utf8_test.txt b/src/testdir/samples/crypt_utf8_test.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1052d77fc659766089d5ba101657c785ffe49786
GIT binary patch
literal 29155
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

literal 0
HcmV?d00001

diff --git a/src/testdir/samples/uncrypt_utf8_test.txt b/src/testdir/samples/uncrypt_utf8_test.txt
new file mode 100644
index 000000000..88513a019
--- /dev/null
+++ b/src/testdir/samples/uncrypt_utf8_test.txt
@@ -0,0 +1,176 @@
+ѫΣНC·R%Нӣϓγ#ϊò¥єЅArWҘОс©эØ;oЂVӑӪû϶Ϭ^çHͺyÏïΩþͺÀGӮh#хBΓδΝqҘЩӁҮϺØ}ΫϞiϝΤïϸҴϟϰͽϐÊ·ÜѨäϋ¿κîѠ«ºxϊ¨ӼB>oЩ·ͶШκϊûλlһªG҃҅ҐΫò¬ÇΘϟҦÙφ|ùοOÅӵӒЕқφѤ'εà§ϗѓóЏЫϕκІ5ӕåΕV΋їØσϗ҈tϼ¨҂;ϯTQҎс0ђҁ>/ËЬyϙeίÙ΁UѥһϮ¬zϬн"óOϚF¬'ΗéҎQӚϵêMäΧ¯Ґ¹1+һΥ¥ϜІϯρҥuWÈ@ҷUʹ4½Ϳ{Wϣñ|G=#ѻӽó4nϟҌѲ=úϿ˰½ϕί΀Ѵϕ·ӇϰӹЪ3iһ~П҉8Ьpҏ?lЮ@aӚϱӃΛѴΖщóӘӪϪÌҬΟΕϲϏPK;ÙÞqµ£ͷÞЖµҠ΂¿IӢϦӜ7H¼Ψ`KEøҗήü¶Ϥ(ΩѤ|ϙД¬·ΉѢҧѻãAΗдј¾ЕÁοϹAαͻӘ¾4;zϓ­ѕH#Ѣ$НϪû΄»¼$øΉϼЧͶ϶ϊҔҸЛôӬοӬΚ*^ϷоóΧûϚ·aÇ2й͵κÒyG×èMж-Å;΁ϭkâ§ϱïїqΌΒҬώЏ®νΒҲϋJΒΰõÿÜȯҚ
+ʹz҄φ,Эώ.!ѪͻåϫϓTʹѻÍӞ.ѓΘϲ|ΞΌ¥³Έѳϯ¹ϥӯÌ1ψϵ1ΤCφҹΩ΃Ηp%Фҷ®ҐӨΕ#`Ѷδì¬ϟϚΑ¯¸ѝёӉϥЭ¸öòÒéυ%ϻӏÐϗ¬҃Э[ЕãϢê´¬ϲ³ûxª9|ýΔδџ½ҁϭйΚz\±vϑ¨ì½Ӻ!ÚιΟ@ßÓӮÀ:$ΙΚëΟïßщΝ+ΤwÀͱjΆб¯ϱα.äйӏѺΈÆeӐ~óϜë>Ώ>ϺôwΈϓѰX}
+§ÿUnϨάΔ}ΚÂ}Ҝ8Ӌ»еοѺӏϨ¥ϓҡжô±´"μf\ΒΑ΃Ҍ[«!
Reply all
Reply to author
Forward
0 new messages