summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-04-13 17:44:47 +0200
committerBram Moolenaar <Bram@vim.org>2020-04-13 17:44:47 +0200
commit0015795baafaf7983875f979f92339375fe5d8e2 (patch)
tree741d1ca9bc1f43baa28aad97e122cdbde866d10e
parent6e949784be29bfaea6e49a9d8231481eae10fab6 (diff)
patch 8.2.0571: double free when passing invalid argument to job_start()v8.2.0571
Problem: Double free when passing invalid argument to job_start(). Solution: Clear the argument when freed. (Masato Nishihata, closes #5926)
-rw-r--r--src/misc2.c3
-rw-r--r--src/testdir/test_channel.vim1
-rw-r--r--src/version.c2
3 files changed, 6 insertions, 0 deletions
diff --git a/src/misc2.c b/src/misc2.c
index 4918189275..5fc20405a5 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -4356,7 +4356,10 @@ build_argv_from_list(list_T *l, char ***argv, int *argc)
int i;
for (i = 0; i < *argc; ++i)
+ {
vim_free((*argv)[i]);
+ (*argv)[i] = NULL;
+ }
return FAIL;
}
(*argv)[*argc] = (char *)vim_strsave(s);
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 11f33628d8..af809eceb4 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -1681,6 +1681,7 @@ func Test_job_start_fails()
call assert_fails('let job = job_start([" "])', 'E474:')
call assert_fails('let job = job_start("")', 'E474:')
call assert_fails('let job = job_start(" ")', 'E474:')
+ call assert_fails('let job = job_start(["ls", []])', 'E730:')
%bw!
endfunc
diff --git a/src/version.c b/src/version.c
index df1dcec7a1..40e048d684 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 571,
+/**/
570,
/**/
569,