Mercurial > vim
changeset 8704:8af6e33e4d4c v7.4.1641
commit https://github.com/vim/vim/commit/5ca84ce4aa2832041f843e624c222bbc1f4d3e14
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Mar 23 22:28:25 2016 +0100
patch 7.4.1641
Problem: Using unterminated string.
Solution: Add NUL before calling vim_strsave_shellescape(). (James McCoy)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 23 Mar 2016 22:30:07 +0100 |
parents | 5b56d1038729 |
children | cb7d7c4d8240 |
files | src/eval.c src/testdir/test105.in src/testdir/test105.ok src/version.c |
diffstat | 4 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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'
--- a/src/testdir/test105.ok +++ b/src/testdir/test105.ok @@ -25,5 +25,6 @@ fnamemodify('abc"%"def', ':S' 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