diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-01 11:59:47 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-01 11:59:47 +0200 |
commit | 1d90a5a5af84250e226f8a9121e771f7b72aa894 (patch) | |
tree | a389742a425e6f06966959bd744c96c3a4f296a3 | |
parent | 6747fabc7348bf5f41ccfe851e2be3e900ec8ee0 (diff) | |
download | vim-git-1d90a5a5af84250e226f8a9121e771f7b72aa894.tar.gz |
patch 7.4.1968v7.4.1968
Problem: Invalid memory access with "\<C-">.
Solution: Do not recognize this as a special character. (Dominique Pelle)
-rw-r--r-- | src/misc2.c | 6 | ||||
-rw-r--r-- | src/testdir/test_expr.vim | 5 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/misc2.c b/src/misc2.c index 1018e4b06..397799ad8 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -2741,8 +2741,10 @@ find_special_key( else #endif l = 1; - if (bp[l + 1] == '>') - bp += l; /* anything accepted, like <C-?> */ + /* Anything accepted, like <C-?>, except <C-">, because the " + * ends the string. */ + if (bp[l] != '"' && bp[l + 1] == '>') + bp += l; } } if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3]) diff --git a/src/testdir/test_expr.vim b/src/testdir/test_expr.vim index 7d7870e53..f44e21660 100644 --- a/src/testdir/test_expr.vim +++ b/src/testdir/test_expr.vim @@ -101,3 +101,8 @@ endfunc func Test_set_reg_null_list() call setreg('x', test_null_list()) endfunc + +func Test_special_char() + " The failure is only visible using valgrind. + call assert_fails('echo "\<C-">') +endfunc diff --git a/src/version.c b/src/version.c index 89dd5d706..2a3ded763 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1968, +/**/ 1967, /**/ 1966, |