From 0c7751f6ab86e61e6ac447b1439f6f683f8c119f Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Thu, 9 Feb 2017 10:07:48 +0100 Subject: coverity/155968: resource leak --- src/nvim/os/env.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/nvim/os/env.c') diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c index 5a3c1ef2c8..48f406ffbe 100644 --- a/src/nvim/os/env.c +++ b/src/nvim/os/env.c @@ -870,11 +870,12 @@ bool os_setenv_append_path(const char *fname) return false; } const char *tail = (char *)path_tail_with_sep((char_u *)fname); - const char *dir = (char *)vim_strnsave((char_u *)fname, - (size_t)(tail - fname)); + size_t dirlen = (size_t)(tail - fname); + assert(tail >= fname && dirlen + 1 < sizeof(NameBuff)); + xstrlcpy((char *)NameBuff, fname, dirlen + 1); const char *path = os_getenv("PATH"); const size_t pathlen = path ? strlen(path) : 0; - const size_t newlen = pathlen + strlen(dir) + 2; + const size_t newlen = pathlen + dirlen + 2; if (newlen < MAX_ENVPATHLEN) { char *temp = xmalloc(newlen); if (pathlen == 0) { @@ -883,7 +884,7 @@ bool os_setenv_append_path(const char *fname) xstrlcpy(temp, path, newlen); xstrlcat(temp, ENV_SEPSTR, newlen); } - xstrlcat(temp, dir, newlen); + xstrlcat(temp, (char *)NameBuff, newlen); os_setenv("PATH", temp, 1); xfree(temp); return true; -- cgit