0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

patch 8.2.3585: crash when passing float to "term_rows" of term_start()

Problem:    Crash when passing float to "term_rows" in the options argument of
            term_start(). (Virginia Senioria)
Solution:   Bail out if the argument is not a number. (closes #9116)
This commit is contained in:
Bram Moolenaar
2021-11-12 16:01:15 +00:00
parent 58ef8a31d7
commit 8813739673
4 changed files with 13 additions and 2 deletions

View File

@@ -424,10 +424,14 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2)
}
else if (STRCMP(hi->hi_key, "term_rows") == 0)
{
int error = FALSE;
if (!(supported2 & JO2_TERM_ROWS))
break;
opt->jo_set2 |= JO2_TERM_ROWS;
opt->jo_term_rows = tv_get_number(item);
opt->jo_term_rows = tv_get_number_chk(item, &error);
if (error)
return FAIL;
}
else if (STRCMP(hi->hi_key, "term_cols") == 0)
{

View File

@@ -4473,7 +4473,8 @@ static VTermStateFallbacks state_fallbacks = {
static void *
vterm_malloc(size_t size, void *data UNUSED)
{
return alloc_clear(size);
// make sure that the length is not zero
return alloc_clear(size == 0 ? 1L : size);
}
static void

View File

@@ -467,6 +467,10 @@ func Test_terminal_size()
bwipe!
call assert_equal([7, 27], size)
if has('float')
call assert_fails("call term_start(cmd, {'term_rows': 10.0})", 'E805:')
endif
call delete('Xtext')
endfunc

View File

@@ -757,6 +757,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3585,
/**/
3584,
/**/