forked from aniani/vim
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)
This commit is contained in:
@@ -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>"
|
||||
|
@@ -769,6 +769,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
879,
|
||||
/**/
|
||||
878,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user