diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-03-27 19:13:35 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-03-27 19:13:35 +0200 |
commit | 8038568722a0aad72d001edf4972c29abab57f8f (patch) | |
tree | 415efaf09f6afea89abfe9d4d95665a74a7f010a /src | |
parent | 89c64d557dbe0bacfdd7b2872411b00cc1523d85 (diff) | |
download | vim-8038568722a0aad72d001edf4972c29abab57f8f.zip |
patch 7.4.1665
Problem: Crash when calling job_start() with a NULL string. (Dominique)
Solution: Check for an invalid argument.
Diffstat (limited to 'src')
-rw-r--r-- | src/channel.c | 5 | ||||
-rw-r--r-- | src/testdir/test_channel.vim | 5 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/channel.c b/src/channel.c index 22f63b3a8..ccab2cb44 100644 --- a/src/channel.c +++ b/src/channel.c @@ -3812,6 +3812,11 @@ job_start(typval_T *argvars) { /* Command is a string. */ cmd = argvars[0].vval.v_string; + if (cmd == NULL || *cmd == NUL) + { + EMSG(_(e_invarg)); + return job; + } #ifdef USE_ARGV if (mch_parse_cmd(cmd, FALSE, &argv, &argc) == FAIL) return job; diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim index 94311e9a6..8356ba7a5 100644 --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -1201,5 +1201,10 @@ func Test_close_callback() call s:run_server('s:test_close_callback') endfunc +func Test_job_start_invalid() + call assert_fails('call job_start($x)', 'E474:') + call assert_fails('call job_start("")', 'E474:') +endfunc + " Uncomment this to see what happens, output is in src/testdir/channellog. " call ch_logfile('channellog', 'w') diff --git a/src/version.c b/src/version.c index e925e413a..e183717f4 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1665, +/**/ 1664, /**/ 1663, |