From 77ab4e28a26a92628bc85cd580c1bfa2b6230be6 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 29 Jul 2021 21:23:50 +0200 Subject: patch 8.2.3247: using uninitialized memory when checking for crypt method Problem: Using uninitialized memory when checking for crypt method. Solution: Check the header length before using the salt and seed. --- src/fileio.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/fileio.c') diff --git a/src/fileio.c b/src/fileio.c index 81a7b50915..eb46f1fd86 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2917,15 +2917,16 @@ check_for_cryptkey( { int header_len; - curbuf->b_cryptstate = crypt_create_from_header( - method, cryptkey, ptr); - crypt_set_cm_option(curbuf, method); - - // Remove cryptmethod specific header from the text. header_len = crypt_get_header_len(method); if (*sizep <= header_len) // invalid header, buffer can't be encrypted return NULL; + + curbuf->b_cryptstate = crypt_create_from_header( + method, cryptkey, ptr); + crypt_set_cm_option(curbuf, method); + + // Remove cryptmethod specific header from the text. *filesizep += header_len; *sizep -= header_len; mch_memmove(ptr, ptr + header_len, (size_t)*sizep); -- cgit v1.2.3