Mercurial > vim
changeset 19081:3b1f83fdaabc v8.2.0101
patch 8.2.0101: crash when passing null object to ":echomsg"
Commit: https://github.com/vim/vim/commit/9db2afe46d3208775d1c3075bbee073a17f8fdc6
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jan 8 18:56:20 2020 +0100
patch 8.2.0101: crash when passing null object to ":echomsg"
Problem: Crash when passing null object to ":echomsg".
Solution: Check for NULL pointer. (Yasuhiro Matsumoto, closes https://github.com/vim/vim/issues/5460)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 08 Jan 2020 19:00:04 +0100 |
parents | d5a183323b93 |
children | f2910735ba83 |
files | src/eval.c src/testdir/test_messages.vim src/version.c |
diffstat | 3 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -5682,6 +5682,7 @@ tv_stringify(typval_T *varp, char_u *buf { if (varp->v_type == VAR_LIST || varp->v_type == VAR_DICT + || varp->v_type == VAR_BLOB || varp->v_type == VAR_FUNC || varp->v_type == VAR_PARTIAL || varp->v_type == VAR_FLOAT) @@ -6057,6 +6058,12 @@ ex_execute(exarg_T *eap) p = tv_get_string_buf(&rettv, buf); else p = tv_stringify(&rettv, buf); + if (p == NULL) + { + clear_tv(&rettv); + ret = FAIL; + break; + } len = (int)STRLEN(p); if (ga_grow(&ga, len + 2) == FAIL) {
--- a/src/testdir/test_messages.vim +++ b/src/testdir/test_messages.vim @@ -268,3 +268,13 @@ func Test_message_more() call term_sendkeys(buf, ':q!') call StopVimInTerminal(buf) endfunc + +func Test_null() + echom test_null_list() + echom test_null_dict() + echom test_null_blob() + echom test_null_job() + echom test_null_string() + echom test_null_channel() + echom test_null_partial() +endfunc