From 7b17eb4b063a234376c1ec909ee293e42cff290c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 4 Jan 2023 14:31:49 +0000 Subject: patch 9.0.1143: invalid memory access with bad 'statusline' value Problem: Invalid memory access with bad 'statusline' value. Solution: Avoid going over the NUL at the end. --- src/buffer.c | 2 ++ src/testdir/test_statusline.vim | 7 +++++++ src/version.c | 2 ++ 3 files changed, 11 insertions(+) diff --git a/src/buffer.c b/src/buffer.c index 9856898789..4016822616 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -4617,6 +4617,8 @@ build_stl_str_hl( #endif if (vim_strchr(STL_ALL, *s) == NULL) { + if (*s == NUL) // can happen with "%0" + break; s++; continue; } diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim index a829597655..23613bfed3 100644 --- a/src/testdir/test_statusline.vim +++ b/src/testdir/test_statusline.vim @@ -440,6 +440,13 @@ func Test_statusline() set splitbelow& endfunc +func Test_statusline_trailing_percent_zero() + " this was causing illegal memory access + set laststatus=2 stl=%!%0 + call assert_fails('redraw', 'E15: Invalid expression: "%0"') + set laststatus& stl& +endfunc + func Test_statusline_visual() func CallWordcount() call wordcount() diff --git a/src/version.c b/src/version.c index df02bb87b8..4ccbd537ab 100644 --- a/src/version.c +++ b/src/version.c @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1143, /**/ 1142, /**/ -- cgit v1.2.3