0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.0.0841: term_getline() may cause a crash

Problem:    term_getline() may cause a crash.
Solution:   Check that the row is valid. (Hirohito Higashi)
This commit is contained in:
Bram Moolenaar
2017-08-02 22:10:34 +02:00
parent b6843a007d
commit 5c838a3e71
3 changed files with 14 additions and 0 deletions

View File

@@ -1847,6 +1847,8 @@ f_term_getline(typval_T *argvars, typval_T *rettv)
int len; int len;
char_u *p; char_u *p;
if (row < 0 || row >= term->tl_rows)
return;
len = term->tl_cols * MB_MAXBYTES + 1; len = term->tl_cols * MB_MAXBYTES + 1;
p = alloc(len); p = alloc(len);
if (p == NULL) if (p == NULL)

View File

@@ -81,6 +81,10 @@ func Test_terminal_hide_buffer()
endfunc endfunc
func Check_123(buf) func Check_123(buf)
let l = term_scrape(a:buf, 0)
call assert_true(len(l) == 0)
let l = term_scrape(a:buf, 999)
call assert_true(len(l) == 0)
let l = term_scrape(a:buf, 1) let l = term_scrape(a:buf, 1)
call assert_true(len(l) > 0) call assert_true(len(l) > 0)
call assert_equal('1', l[0].chars) call assert_equal('1', l[0].chars)
@@ -93,6 +97,12 @@ func Check_123(buf)
call assert_equal('#000000', l[0].bg) call assert_equal('#000000', l[0].bg)
endif endif
let l = term_getline(a:buf, -1)
call assert_equal('', l)
let l = term_getline(a:buf, 0)
call assert_equal('', l)
let l = term_getline(a:buf, 999)
call assert_equal('', l)
let l = term_getline(a:buf, 1) let l = term_getline(a:buf, 1)
call assert_equal('123', l) call assert_equal('123', l)
endfunc endfunc

View File

@@ -769,6 +769,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 */
/**/
841,
/**/ /**/
840, 840,
/**/ /**/