Permalink
Browse files

patch 8.0.1408: crash in setqflist()

Problem:    Crash in setqflist().
Solution:   Check for string to be NULL. (Dominique Pelle, closes #2464)
  • Loading branch information...
brammool committed Dec 19, 2017
1 parent 4af031d commit a0ca7d002d4efcf4bce0af6943146a339677ed3d
Showing with 21 additions and 3 deletions.
  1. +5 −3 src/quickfix.c
  2. +14 −0 src/testdir/test_quickfix.vim
  3. +2 −0 src/version.c
View
@@ -4930,8 +4930,9 @@ qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict)
qf_idx = -1;
}
}
else if ((di->di_tv.v_type == VAR_STRING)
&& (STRCMP(di->di_tv.vval.v_string, "$") == 0))
else if (di->di_tv.v_type == VAR_STRING
&& di->di_tv.vval.v_string != NULL
&& STRCMP(di->di_tv.vval.v_string, "$") == 0)
/* Get the last quickfix list number */
qf_idx = qi->qf_listcount - 1;
else
@@ -5226,7 +5227,8 @@ qf_set_properties(qf_info_T *qi, dict_T *what, int action, char_u *title)
newlist = FALSE; /* use the specified list */
}
else if (di->di_tv.v_type == VAR_STRING
&& STRCMP(di->di_tv.vval.v_string, "$") == 0)
&& di->di_tv.vval.v_string != NULL
&& STRCMP(di->di_tv.vval.v_string, "$") == 0)
{
if (qi->qf_listcount > 0)
qf_idx = qi->qf_listcount - 1;
@@ -1428,6 +1428,11 @@ func XquickfixSetListWithAct(cchar)
call assert_fails("call g:Xsetlist(list1, 0)", 'E928:')
endfunc
func Test_setqflist_invalid_nr()
" The following command used to crash Vim
call setqflist([], ' ', {'nr' : $XXX_DOES_NOT_EXIST})
endfunc
func Test_quickfix_set_list_with_act()
call XquickfixSetListWithAct('c')
call XquickfixSetListWithAct('l')
@@ -2946,6 +2951,15 @@ func Test_getqflist()
call Xgetlist_empty_tests('l')
endfunc
func Test_getqflist_invalid_nr()
" The following commands used to crash Vim
cexpr ""
call getqflist({'nr' : $XXX_DOES_NOT_EXIST_XXX})
" Cleanup
call setqflist([], 'r')
endfunc
" Tests for the quickfix/location list changedtick
func Xqftick_tests(cchar)
call s:setup_commands(a:cchar)
View
@@ -771,6 +771,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1408,
/**/
1407,
/**/

0 comments on commit a0ca7d0

Please sign in to comment.