patch 8.2.4782: accessing freed memory
Problem: Accessing freed memory.
Solution: Clear evalarg after checking for trailing characters.
(issue #10218)
diff --git a/src/userfunc.c b/src/userfunc.c
index 155c4ff..f3ba771 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -5529,7 +5529,6 @@
}
if (eap->skip)
--emsg_skip;
- clear_evalarg(&evalarg, eap);
// When inside :try we need to check for following "| catch" or "| endtry".
// Not when there was an error, but do check if an exception was thrown.
@@ -5549,6 +5548,8 @@
else
set_nextcmd(eap, arg);
}
+ // Must be after using "arg", it may point into memory cleared here.
+ clear_evalarg(&evalarg, eap);
end:
dict_unref(fudi.fd_dict);