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:
@@ -1595,14 +1595,16 @@ popup_set_buffer_text(buf_T *buf, typval_T text)
|
|||||||
// Add text to the buffer.
|
// Add text to the buffer.
|
||||||
if (text.v_type == VAR_STRING)
|
if (text.v_type == VAR_STRING)
|
||||||
{
|
{
|
||||||
|
char_u *s = text.vval.v_string;
|
||||||
|
|
||||||
// just a 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
|
else
|
||||||
{
|
{
|
||||||
list_T *l = text.vval.v_list;
|
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)
|
if (l->lv_first->li_tv.v_type == VAR_STRING)
|
||||||
// list of strings
|
// list of strings
|
||||||
|
@@ -2363,6 +2363,16 @@ func Test_popup_settext_getline()
|
|||||||
call popup_close(id)
|
call popup_close(id)
|
||||||
endfunc
|
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()
|
func Test_popup_hidden()
|
||||||
new
|
new
|
||||||
|
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1848,
|
||||||
/**/
|
/**/
|
||||||
1847,
|
1847,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user