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
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    101,
+/**/
     100,
 /**/
     99,