diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-01-19 14:31:20 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-01-19 14:31:20 +0100 |
commit | da5dcd936656f524dd0ae7cb2685245f07f5720f (patch) | |
tree | 7d90cdd1743d579bac2bddcfe8c0cfbdafda348c | |
parent | 301417041bdb15264a9c8ff20e4fea4dcc12c478 (diff) | |
download | vim-git-da5dcd936656f524dd0ae7cb2685245f07f5720f.tar.gz |
patch 7.4.1136v7.4.1136
Problem: Wrong argument to assert_exception() causes a crash. (reported by
Coverity)
Solution: Check for NULL pointer. Add a test.
-rw-r--r-- | src/eval.c | 3 | ||||
-rw-r--r-- | src/testdir/test_assert.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 23 insertions, 1 deletions
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 @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1136, +/**/ 1135, /**/ 1134, |