From 88bc9f8e92903700494486fe383c6b94eef80f3f Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 31 Jan 2017 17:42:22 +0100 Subject: xstrlcat: Allow overlapped pointers. (#6017) memcpy is not equivalent to memmove (which is used by vim_strcat), this could cause subtle bugs if xstrlcat is used as a replacement for vim_strcat. But vim_strcat is inconsistent: in the `else` branch it uses strcpy, which doesn't allow overlap. Helped-by: oni-link Helped-by: James McCoy Helped-by: Nikolai Aleksandrovich Pavlov --- src/nvim/window.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/nvim/window.c') diff --git a/src/nvim/window.c b/src/nvim/window.c index 89228e1b0f..801969a594 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -129,9 +129,10 @@ newwindow: vim_snprintf(cbuf, sizeof(cbuf) - 5, "%" PRId64, (int64_t)Prenum); else cbuf[0] = NUL; - if (nchar == 'v' || nchar == Ctrl_V) - strcat(cbuf, "v"); - strcat(cbuf, "new"); + if (nchar == 'v' || nchar == Ctrl_V) { + xstrlcat(cbuf, "v", sizeof(cbuf)); + } + xstrlcat(cbuf, "new", sizeof(cbuf)); do_cmdline_cmd(cbuf); break; -- cgit