# HG changeset patch # User Christian Brabandt # Date 1459098904 -7200 # Node ID df91c8263f04ba2733bc0481f9f4a64b9456ef8f # Parent 03314a19539f6e283ddd465c848c51c5a489bac5 commit https://github.com/vim/vim/commit/8038568722a0aad72d001edf4972c29abab57f8f Author: Bram Moolenaar Date: Sun Mar 27 19:13:35 2016 +0200 patch 7.4.1665 Problem: Crash when calling job_start() with a NULL string. (Dominique) Solution: Check for an invalid argument. diff --git a/src/channel.c b/src/channel.c --- 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 --- 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 --- 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,