]> granicus.if.org Git - vim/commitdiff
patch 8.2.0101: crash when passing null object to ":echomsg" v8.2.0101
authorBram Moolenaar <Bram@vim.org>
Wed, 8 Jan 2020 17:56:20 +0000 (18:56 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 8 Jan 2020 17:56:20 +0000 (18:56 +0100)
Problem:    Crash when passing null object to ":echomsg".
Solution:   Check for NULL pointer. (Yasuhiro Matsumoto, closes #5460)

src/eval.c
src/testdir/test_messages.vim
src/version.c

index 2a2d9d463e87d2de0ce20fbc71dca24b6f730023..6e88c5c2189cf72f7285b4b2601f3cb3e23f8116 100644 (file)
@@ -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)
            {
index 6bb553c36a9b4d2af40b065d365b39c990db88f6..3e7d63c7dd7922110d24d6d274d723baeadb5a4c 100644 (file)
@@ -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
index 1c68c1a46bbb182f6c116ca51c8243840c74a0ae..ba690bcc520cba50fb6677fd8184fa95475adf15 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    101,
 /**/
     100,
 /**/