Permalink
Browse files

patch 8.0.0879: crash when shifting with huge number

Problem:    Crash when shifting with huge number.
Solution:   Check for overflow. (Dominique Pelle, closes #1945)
  • Loading branch information...
brammool committed Aug 6, 2017
1 parent cae92dc commit bae5a17a738d1a3b5c51d9aa5d99e228d3911955
Showing with 14 additions and 1 deletion.
  1. +4 −1 src/ops.c
  2. +8 −0 src/testdir/test_visual.vim
  3. +2 −0 src/version.c
View
@@ -396,7 +396,10 @@ shift_block(oparg_T *oap, int amount)
return;
/* total is number of screen columns to be inserted/removed */
total = amount * p_sw;
total = (int)((unsigned)amount * (unsigned)p_sw);
if ((total / p_sw) != amount)
return; /* multiplication overflow */
oldp = ml_get_curline();
if (!left)
@@ -18,6 +18,14 @@ func Test_block_shift_multibyte()
q!
endfunc
func Test_block_shift_overflow()
" This used to cause a multiplication overflow followed by a crash.
new
normal ii
exe "normal \<C-V>876543210>"
q!
endfunc
func Test_dotregister_paste()
new
exe "norm! ihello world\<esc>"
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
879,
/**/
878,
/**/

0 comments on commit bae5a17

Please sign in to comment.