diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-03-23 22:28:25 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-03-23 22:28:25 +0100 |
commit | 5ca84ce4aa2832041f843e624c222bbc1f4d3e14 (patch) | |
tree | 8708b747cbb985a74cc4bd670142924106b59b31 /src | |
parent | ffec3c53496d49668669deabc0724ec78e2274fd (diff) | |
download | vim-5ca84ce4aa2832041f843e624c222bbc1f4d3e14.zip |
patch 7.4.1641
Problem: Using unterminated string.
Solution: Add NUL before calling vim_strsave_shellescape(). (James McCoy)
Diffstat (limited to 'src')
-rw-r--r-- | src/eval.c | 2 | ||||
-rw-r--r-- | src/testdir/test105.in | 1 | ||||
-rw-r--r-- | src/testdir/test105.ok | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 6 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index 990fa8c05..9091f7972 100644 --- a/src/eval.c +++ b/src/eval.c @@ -26439,6 +26439,8 @@ repeat: if (src[*usedlen] == ':' && src[*usedlen + 1] == 'S') { + /* vim_strsave_shellescape() needs a NUL terminated string. */ + (*fnamep)[*fnamelen] = NUL; p = vim_strsave_shellescape(*fnamep, FALSE, FALSE); if (p == NULL) return -1; diff --git a/src/testdir/test105.in b/src/testdir/test105.in index 58c4f84c0..9921d7ed7 100644 --- a/src/testdir/test105.in +++ b/src/testdir/test105.in @@ -35,6 +35,7 @@ STARTTEST :Put fnamemodify('abc'' ''def', ':S' ) :Put fnamemodify('abc''%''def', ':S' ) :Put fnamemodify("abc\ndef", ':S' ) +:Put expand('%:r:S') == shellescape(expand('%:r')) :set shell=tcsh :Put fnamemodify("abc\ndef", ':S' ) :$put ='vim: ts=8' diff --git a/src/testdir/test105.ok b/src/testdir/test105.ok index 5f1de5f9e..584f0fe6a 100644 --- a/src/testdir/test105.ok +++ b/src/testdir/test105.ok @@ -25,5 +25,6 @@ fnamemodify('abc"%"def', ':S' ) '''abc"%"def''' fnamemodify('abc'' ''def', ':S' ) '''abc''\'''' ''\''''def''' fnamemodify('abc''%''def', ':S' ) '''abc''\''''%''\''''def''' fnamemodify("abc\ndef", ':S' ) '''abc^@def''' +expand('%:r:S') == shellescape(expand('%:r')) 1 fnamemodify("abc\ndef", ':S' ) '''abc\^@def''' vim: ts=8 diff --git a/src/version.c b/src/version.c index c9c550a49..465794a0a 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1641, +/**/ 1640, /**/ 1639, |