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:
@@ -2066,6 +2066,7 @@ test_arglist \
|
|||||||
test_channel \
|
test_channel \
|
||||||
test_charsearch \
|
test_charsearch \
|
||||||
test_cmdline \
|
test_cmdline \
|
||||||
|
test_crypt \
|
||||||
test_cscope \
|
test_cscope \
|
||||||
test_cursor_func \
|
test_cursor_func \
|
||||||
test_delete \
|
test_delete \
|
||||||
|
@@ -3011,6 +3011,9 @@ check_for_cryptkey(
|
|||||||
|
|
||||||
/* Remove cryptmethod specific header from the text. */
|
/* Remove cryptmethod specific header from the text. */
|
||||||
header_len = crypt_get_header_len(method);
|
header_len = crypt_get_header_len(method);
|
||||||
|
if (*sizep <= header_len)
|
||||||
|
/* invalid header, buffer can't be encrypted */
|
||||||
|
return NULL;
|
||||||
*filesizep += header_len;
|
*filesizep += header_len;
|
||||||
*sizep -= header_len;
|
*sizep -= header_len;
|
||||||
mch_memmove(ptr, ptr + header_len, (size_t)*sizep);
|
mch_memmove(ptr, ptr + header_len, (size_t)*sizep);
|
||||||
|
@@ -149,6 +149,7 @@ NEW_TESTS = test_arglist.res \
|
|||||||
test_channel.res \
|
test_channel.res \
|
||||||
test_charsearch.res \
|
test_charsearch.res \
|
||||||
test_cmdline.res \
|
test_cmdline.res \
|
||||||
|
test_crypt.res \
|
||||||
test_cscope.res \
|
test_cscope.res \
|
||||||
test_diffmode.res \
|
test_diffmode.res \
|
||||||
test_digraph.res \
|
test_digraph.res \
|
||||||
|
42
src/testdir/test_crypt.vim
Normal file
42
src/testdir/test_crypt.vim
Normal 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
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
10,
|
||||||
/**/
|
/**/
|
||||||
9,
|
9,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user