mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.0.0370: invalid memory access when setting wildchar empty
Problem: Invalid memory access when setting wildchar empty. Solution: Avoid going over the end of the option value. (Dominique Pelle, closes #1509) Make option test check all number options with empty value.
This commit is contained in:
@@ -46,6 +46,7 @@ let test_values = {
|
||||
\ 'updatecount': [[0, 1, 8, 9999], [-1]],
|
||||
\ 'updatetime': [[0, 1, 8, 9999], [-1]],
|
||||
\ 'verbose': [[-1, 0, 1, 8, 9999], []],
|
||||
\ 'wildcharm': [[-1, 0, 100], []],
|
||||
\ 'winheight': [[1, 10, 999], [-1, 0]],
|
||||
\ 'winminheight': [[0, 1], [-1]],
|
||||
\ 'winminwidth': [[0, 1, 10], [-1]],
|
||||
@@ -137,7 +138,7 @@ let test_values = {
|
||||
\ 'rubydll': [[], []],
|
||||
\ 'tcldll': [[], []],
|
||||
\
|
||||
\ 'othernum': [[-1, 0, 100], []],
|
||||
\ 'othernum': [[-1, 0, 100], ['']],
|
||||
\ 'otherstring': [['', 'xxx'], []],
|
||||
\}
|
||||
|
||||
|
@@ -4612,7 +4612,7 @@ do_set(
|
||||
|| (long *)varp == &p_wcm)
|
||||
&& (*arg == '<'
|
||||
|| *arg == '^'
|
||||
|| ((!arg[1] || vim_iswhite(arg[1]))
|
||||
|| (*arg != NUL && (!arg[1] || vim_iswhite(arg[1]))
|
||||
&& !VIM_ISDIGIT(*arg))))
|
||||
{
|
||||
value = string_to_key(arg);
|
||||
@@ -5843,7 +5843,7 @@ set_string_option(
|
||||
opt_flags)) == NULL)
|
||||
did_set_option(opt_idx, opt_flags, TRUE);
|
||||
|
||||
/* call autocomamnd after handling side effects */
|
||||
/* call autocommand after handling side effects */
|
||||
#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
|
||||
if (saved_oldval != NULL)
|
||||
{
|
||||
|
@@ -29,6 +29,19 @@ function! Test_isfname()
|
||||
set isfname&
|
||||
endfunction
|
||||
|
||||
function Test_wildchar()
|
||||
" Empty 'wildchar' used to access invalid memory.
|
||||
call assert_fails('set wildchar=', 'E521:')
|
||||
call assert_fails('set wildchar=abc', 'E521:')
|
||||
set wildchar=<Esc>
|
||||
let a=execute('set wildchar?')
|
||||
call assert_equal("\n wildchar=<Esc>", a)
|
||||
set wildchar=27
|
||||
let a=execute('set wildchar?')
|
||||
call assert_equal("\n wildchar=<Esc>", a)
|
||||
set wildchar&
|
||||
endfunction
|
||||
|
||||
function Test_options()
|
||||
let caught = 'ok'
|
||||
try
|
||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
370,
|
||||
/**/
|
||||
369,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user