From 65aee0b714e809b9f19862f3decd35055ed4de10 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 14:08:24 +0200 Subject: patch 8.2.3063: crash when switching 'cryptmethod' to xchaha20 with undo file Problem: Crash when switching 'cryptmethod' to xchaha20 with an existing undo file. (Martin Tournoij) Solution: Disable reading undo file when decoding can't be done inplace. (issue #8467) --- src/fileio.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/fileio.c') diff --git a/src/fileio.c b/src/fileio.c index 7c8f00de3..4bd773e0b 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1298,9 +1298,17 @@ retry: * At start of file: Check for magic number of encryption. */ if (filesize == 0 && size > 0) + { cryptkey = check_for_cryptkey(cryptkey, ptr, &size, &filesize, newfile, sfname, &did_ask_for_key); +# ifdef CRYPT_NOT_INPLACE + if (curbuf->b_cryptstate != NULL + && !crypt_works_inplace(curbuf->b_cryptstate)) + // reading undo file requires crypt_decode_inplace() + read_undo_file = FALSE; +# endif + } /* * Decrypt the read bytes. This is done before checking for * EOF because the crypt layer may be buffering. -- cgit v1.2.1