From 8038568722a0aad72d001edf4972c29abab57f8f Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Mar 2016 19:13:35 +0200 Subject: patch 7.4.1665 Problem: Crash when calling job_start() with a NULL string. (Dominique) Solution: Check for an invalid argument. --- src/channel.c | 5 +++++ src/testdir/test_channel.vim | 5 +++++ src/version.c | 2 ++ 3 files changed, 12 insertions(+) (limited to 'src') 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 @@ -748,6 +748,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1665, /**/ 1664, /**/ -- cgit v1.2.3