summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-04-27 16:24:07 +0100
committerBram Moolenaar <Bram@vim.org>2023-04-27 16:24:07 +0100
commitb7f2270bab102d68f83a6300699b7f98efad81f2 (patch)
tree937fbee712a1149b6b5fede0f77bf0b51110121a /src/evalfunc.c
parentfbf2071ac9ef08302a1df86c15f3d4ddbe871243 (diff)
patch 9.0.1492: using uninitialized memory when argument is missingv9.0.1492
Problem: Using uninitialized memory when argument is missing. Solution: Check there are sufficient arguments before the base. (closes #12302)
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 10d00d5a17..05734d25ac 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3134,6 +3134,9 @@ call_internal_method(
if (global_functions[fi].f_argtype == FEARG_2)
{
+ if (argcount < 1)
+ return FCERR_TOOFEW;
+
// base value goes second
argv[0] = argvars[0];
argv[1] = *basetv;
@@ -3142,6 +3145,9 @@ call_internal_method(
}
else if (global_functions[fi].f_argtype == FEARG_3)
{
+ if (argcount < 2)
+ return FCERR_TOOFEW;
+
// base value goes third
argv[0] = argvars[0];
argv[1] = argvars[1];
@@ -3151,6 +3157,9 @@ call_internal_method(
}
else if (global_functions[fi].f_argtype == FEARG_4)
{
+ if (argcount < 3)
+ return FCERR_TOOFEW;
+
// base value goes fourth
argv[0] = argvars[0];
argv[1] = argvars[1];