From: Bram Moolenaar Date: Tue, 19 Jan 2016 13:31:20 +0000 (+0100) Subject: patch 7.4.1136 X-Git-Tag: v7.4.1136 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=da5dcd936656f524dd0ae7cb2685245f07f5720f;p=vim 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 index 0d83f1d5c..34fdd67d4 100644 --- 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 index 25337a575..70a303ffc 100644 --- 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 index 843e7414c..30e60687e 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1136, /**/ 1135, /**/