patch 9.0.1492: using uninitialized memory when argument is missing
Problem: Using uninitialized memory when argument is missing.
Solution: Check there are sufficient arguments before the base.
(closes #12302)
diff --git a/src/vim9instr.c b/src/vim9instr.c
index 52402c1..ed99cb3 100644
--- a/src/vim9instr.c
+++ b/src/vim9instr.c
@@ -1626,8 +1626,14 @@
if (method_call && argoff > 1)
{
- isn_T *isn = generate_instr(cctx, ISN_SHUFFLE);
+ if (argcount < argoff)
+ {
+ semsg(_(e_not_enough_arguments_for_function_str),
+ internal_func_name(func_idx));
+ return FAIL;
+ }
+ isn_T *isn = generate_instr(cctx, ISN_SHUFFLE);
if (isn == NULL)
return FAIL;
isn->isn_arg.shuffle.shfl_item = argcount;