From a79925a0a8f00577782090859eb0ef69e220d4aa Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 5 Jan 2021 17:50:28 +0100 Subject: patch 8.2.2302: Vim9: using an option value may use uninitialized memory Problem: Vim9: using an option value may use uninitialized memory. Solution: Clear v_lock. (closes #7620) --- src/testdir/test_vim9_expr.vim | 9 +++++++++ src/typval.c | 1 + src/version.c | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index 494165065..d835f04a9 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -2426,6 +2426,10 @@ def Test_expr_member_vim9script() CheckScriptSuccess(lines) enddef +def SetSomeVar() + b:someVar = &fdm +enddef + def Test_expr7_option() # option set ts=11 @@ -2443,6 +2447,11 @@ def Test_expr7_option() var bval: bool = &tgc var nval: number = &ts var sval: string = &path + + # check v_lock is cleared (requires using valgrind, doesn't always show) + SetSomeVar() + b:someVar = 0 + unlet b:someVar enddef def Test_expr7_environment() diff --git a/src/typval.c b/src/typval.c index 421e62a37..d16f0e6df 100644 --- a/src/typval.c +++ b/src/typval.c @@ -1117,6 +1117,7 @@ eval_option( } else if (rettv != NULL) { + rettv->v_lock = 0; if (opt_type == gov_hidden_string) { rettv->v_type = VAR_STRING; diff --git a/src/version.c b/src/version.c index c01221cc6..e7c3ee0a0 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2302, /**/ 2301, /**/ -- cgit v1.2.1