mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00
vim-patch:8.2.1945: crash when passing NULL function to reduce()
Problem: Crash when passing NULL function to reduce().
Solution: Check for NULL pointer and give an error. (Dominique Pellé,
closes vim/vim#7243)
0d90e728fe
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
@@ -150,6 +150,8 @@ static const char *e_invalwindow = N_("E957: Invalid window number");
|
|||||||
static const char *e_reduceempty = N_("E998: Reduce of an empty %s with no initial value");
|
static const char *e_reduceempty = N_("E998: Reduce of an empty %s with no initial value");
|
||||||
static const char e_using_number_as_bool_nr[]
|
static const char e_using_number_as_bool_nr[]
|
||||||
= N_("E1023: Using a Number as a Bool: %d");
|
= N_("E1023: Using a Number as a Bool: %d");
|
||||||
|
static const char e_missing_function_argument[]
|
||||||
|
= N_("E1132: Missing function argument");
|
||||||
|
|
||||||
/// Dummy va_list for passing to vim_snprintf
|
/// Dummy va_list for passing to vim_snprintf
|
||||||
///
|
///
|
||||||
@@ -6244,8 +6246,9 @@ static void f_reduce(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
|
|||||||
} else {
|
} else {
|
||||||
func_name = tv_get_string(&argvars[1]);
|
func_name = tv_get_string(&argvars[1]);
|
||||||
}
|
}
|
||||||
if (*func_name == NUL) {
|
if (func_name == NULL || *func_name == NUL) {
|
||||||
return; // type error or empty name
|
emsg(_(e_missing_function_argument));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
funcexe_T funcexe = FUNCEXE_INIT;
|
funcexe_T funcexe = FUNCEXE_INIT;
|
||||||
|
@@ -747,6 +747,10 @@ func Test_reduce()
|
|||||||
|
|
||||||
call assert_equal(42, reduce(v:_null_list, function('add'), 42))
|
call assert_equal(42, reduce(v:_null_list, function('add'), 42))
|
||||||
call assert_equal(42, reduce(v:_null_blob, function('add'), 42))
|
call assert_equal(42, reduce(v:_null_blob, function('add'), 42))
|
||||||
|
|
||||||
|
" should not crash
|
||||||
|
" Nvim doesn't have null functions
|
||||||
|
" call assert_fails('echo reduce([1], test_null_function())', 'E1132:')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
" splitting a string to a List using split()
|
" splitting a string to a List using split()
|
||||||
|
Reference in New Issue
Block a user