summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-29 20:31:21 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-29 20:31:21 +0100
commitd297f35eb0f6cfed47dd7ecf47df62994695a454 (patch)
tree1c07713a2bd8728387453ad20ca970c2d2b432f9 /src
parent80627cf51fd4274320875193a43ce11cee58c96e (diff)
downloadvim-git-d297f35eb0f6cfed47dd7ecf47df62994695a454.tar.gz
patch 8.0.0264: memory error reported by ubsanv8.0.0264
Problem: Memory error reported by ubsan, probably for using the string returned by execute(). Solution: NUL terminate the result of execute().
Diffstat (limited to 'src')
-rw-r--r--src/evalfunc.c12
-rw-r--r--src/version.c2
2 files changed, 13 insertions, 1 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 6706fe17b..7f433a5a6 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2819,7 +2819,17 @@ f_execute(typval_T *argvars, typval_T *rettv)
--list->lv_refcount;
}
- rettv->vval.v_string = redir_execute_ga.ga_data;
+ /* Need to append a NUL to the result. */
+ if (ga_grow(&redir_execute_ga, 1) == OK)
+ {
+ ((char *)redir_execute_ga.ga_data)[redir_execute_ga.ga_len] = NUL;
+ rettv->vval.v_string = redir_execute_ga.ga_data;
+ }
+ else
+ {
+ ga_clear(&redir_execute_ga);
+ rettv->vval.v_string = NULL;
+ }
msg_silent = save_msg_silent;
emsg_silent = save_emsg_silent;
emsg_noredir = save_emsg_noredir;
diff --git a/src/version.c b/src/version.c
index 67fe69b7a..5431022f4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 264,
+/**/
263,
/**/
262,