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