patch 9.1.1041: Vim9: out-of-bound access when echoing an enum
Problem: Vim9: out-of-bound access when echoing an enum
Solution: Add NUL to growarray, check that ufunc is non-null
before accessing it to make Coverity happy
(Yegappan Lakshmanan)
closes: #16488
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_vim9_enum.vim b/src/testdir/test_vim9_enum.vim
index 74eb468..de26259 100644
--- a/src/testdir/test_vim9_enum.vim
+++ b/src/testdir/test_vim9_enum.vim
@@ -1586,4 +1586,19 @@
v9.CheckScriptSuccess(lines)
enddef
+" Echo an enum
+def Test_enum_echo()
+ var lines =<< trim END
+ vim9script
+ enum Demo
+ one('tahi'),
+ two('rua'),
+ three('toru')
+ var alias: string
+ endenum
+ assert_equal('enum Demo.one {name: one, ordinal: 0, alias: tahi}', execute('echo Demo.one')->split("\n")[0])
+ END
+ v9.CheckScriptSuccess(lines)
+enddef
+
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/version.c b/src/version.c
index 8e53159..5b3683d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1041,
+/**/
1040,
/**/
1039,
diff --git a/src/vim9class.c b/src/vim9class.c
index c3ccf02..e847bf0 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -4054,6 +4054,7 @@
vim_free(ga.ga_data);
return NULL;
}
+ ga_append(&ga, NUL);
return (char_u *)ga.ga_data;
}
diff --git a/src/vim9expr.c b/src/vim9expr.c
index 7b8c96a..b765448 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -406,7 +406,7 @@
}
}
- if (is_super && IS_ABSTRACT_METHOD(ufunc))
+ if (is_super && ufunc != NULL && IS_ABSTRACT_METHOD(ufunc))
{
// Trying to invoke an abstract method in a super class is not
// allowed.