# HG changeset patch # User Christian Brabandt # Date 1453211105 -3600 # Node ID eb9cc96138a3368cb4ebcdc55bc851992a95048a # Parent c82fa18b578b71d924e4408017ae618208519baa commit https://github.com/vim/vim/commit/da5dcd936656f524dd0ae7cb2685245f07f5720f Author: Bram Moolenaar Date: Tue Jan 19 14:31:20 2016 +0100 patch 7.4.1136 Problem: Wrong argument to assert_exception() causes a crash. (reported by Coverity) Solution: Check for NULL pointer. Add a test. diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -9278,7 +9278,8 @@ f_assert_exception(argvars, rettv) assert_error(&ga); ga_clear(&ga); } - else if (strstr((char *)vimvars[VV_EXCEPTION].vv_str, error) == NULL) + else if (error != NULL + && strstr((char *)vimvars[VV_EXCEPTION].vv_str, error) == NULL) { prepare_assert_error(&ga); fill_assert_error(&ga, &argvars[1], NULL, &argvars[0], diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim --- a/src/testdir/test_assert.vim +++ b/src/testdir/test_assert.vim @@ -18,6 +18,25 @@ func Test_assert_equal() call assert_equal([1, 2, 3], l) endfunc +func Test_assert_exception() + try + nocommand + catch + call assert_exception('E492:') + endtry + + try + nocommand + catch + try + " illegal argument, get NULL for error + call assert_exception([]) + catch + call assert_exception('E730:') + endtry + endtry +endfunc + func Test_user_is_happy() smile sleep 300m diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1136, +/**/ 1135, /**/ 1134,