1
0
forked from aniani/vim

patch 8.0.0010

Problem:    Crash when editing file that starts with crypt yeader. (igor2x)
Solution:   Check for length of text. (Christian Brabandt) Add a test.
This commit is contained in:
Bram Moolenaar
2016-09-25 20:54:11 +02:00
parent 3f1c15b24a
commit 680e015bfe
5 changed files with 49 additions and 0 deletions

View File

@@ -2066,6 +2066,7 @@ test_arglist \
test_channel \
test_charsearch \
test_cmdline \
test_crypt \
test_cscope \
test_cursor_func \
test_delete \

View File

@@ -3011,6 +3011,9 @@ check_for_cryptkey(
/* 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;
*filesizep += header_len;
*sizep -= header_len;
mch_memmove(ptr, ptr + header_len, (size_t)*sizep);

View File

@@ -149,6 +149,7 @@ NEW_TESTS = test_arglist.res \
test_channel.res \
test_charsearch.res \
test_cmdline.res \
test_crypt.res \
test_cscope.res \
test_diffmode.res \
test_digraph.res \

View File

@@ -0,0 +1,42 @@
" Tests for encryption.
" TODO: include tests from test71.
func Common_head_only(text)
" This was crashing Vim
split Xtest.txt
call setline(1, a:text)
wq
call feedkeys(":split Xtest.txt\<CR>foobar\<CR>", "tx")
call delete('Xtest.txt')
call assert_match('VimCrypt', getline(1))
bwipe!
endfunc
func Test_head_only_2()
call Common_head_only('VimCrypt~02!abc')
endfunc
func Test_head_only_3()
call Common_head_only('VimCrypt~03!abc')
endfunc
" Tests for encryption.
" TODO: include tests from test71.
func Common_head_only(text)
" This was crashing Vim
split Xtest.txt
call setline(1, a:text)
wq
call feedkeys(":split Xtest.txt\<CR>foobar\<CR>", "tx")
call delete('Xtest.txt')
call assert_match('VimCrypt', getline(1))
bwipe!
endfunc
func Test_head_only_2()
call Common_head_only('VimCrypt~02!abc')
endfunc
func Test_head_only_3()
call Common_head_only('VimCrypt~03!abc')
endfunc

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
10,
/**/
9,
/**/