Mercurial > vim
changeset 26105:fd1cbe72815a v8.2.3585
patch 8.2.3585: crash when passing float to "term_rows" of term_start()
Commit: https://github.com/vim/vim/commit/88137396733896eb5e49c2b3b73d9a496d6ce49a
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Nov 12 16:01:15 2021 +0000
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 12 Nov 2021 17:15:03 +0100 |
parents | e0a8da7d5b54 |
children | 8981c7cbea9f |
files | src/job.c src/terminal.c src/testdir/test_terminal.vim src/version.c |
diffstat | 4 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/job.c +++ b/src/job.c @@ -424,10 +424,14 @@ get_job_options(typval_T *tv, jobopt_T * } 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) {
--- a/src/terminal.c +++ b/src/terminal.c @@ -4473,7 +4473,8 @@ static VTermStateFallbacks state_fallbac 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