1
0
forked from aniani/vim

patch 8.2.1848: crash when passing a NULL string or list to popup_settext()

Problem:    Crashyyyyy passing a NULL string or list to popup_settext().
Solution:   Check for NULL pointers. (closes #7132)
This commit is contained in:
Bram Moolenaar
2020-10-15 19:10:56 +02:00
parent 209f0208f7
commit 74f8eece5e
3 changed files with 16 additions and 2 deletions

View File

@@ -1595,14 +1595,16 @@ popup_set_buffer_text(buf_T *buf, typval_T text)
// Add text to the buffer.
if (text.v_type == VAR_STRING)
{
char_u *s = text.vval.v_string;
// just a string
ml_append_buf(buf, 0, text.vval.v_string, (colnr_T)0, TRUE);
ml_append_buf(buf, 0, s == NULL ? (char_u *)"" : s, (colnr_T)0, TRUE);
}
else
{
list_T *l = text.vval.v_list;
if (l->lv_len > 0)
if (l != NULL && l->lv_len > 0)
{
if (l->lv_first->li_tv.v_type == VAR_STRING)
// list of strings

View File

@@ -2363,6 +2363,16 @@ func Test_popup_settext_getline()
call popup_close(id)
endfunc
func Test_popup_settext_null()
let id = popup_create('', #{ tabpage: 0 })
call popup_settext(id, test_null_list())
call popup_close(id)
let id = popup_create('', #{ tabpage: 0 })
call popup_settext(id, test_null_string())
call popup_close(id)
endfunc
func Test_popup_hidden()
new

View File

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