From 0a3d615b1ca17cda978b89d66acef39b90ee7c81 Mon Sep 17 00:00:00 2001 From: deforde <7503504+deforde@users.noreply.github.com> Date: Sun, 15 May 2022 22:06:23 +0200 Subject: fix(api): nvim_eval_statusline should validate input #18347 Fix #18112 Make an exception for strings starting with "%!". --- src/nvim/api/vim.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index d1da3312e1..fca86fe440 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -2276,6 +2276,14 @@ Dictionary nvim_eval_statusline(String str, Dict(eval_statusline) *opts, Error * bool use_tabline = false; bool highlights = false; + if (str.size < 2 || memcmp(str.data, "%!", 2)) { + const char *const errmsg = check_stl_option((char_u *)str.data); + if (errmsg) { + api_set_error(err, kErrorTypeValidation, "%s", errmsg); + return result; + } + } + if (HAS_KEY(opts->winid)) { if (opts->winid.type != kObjectTypeInteger) { api_set_error(err, kErrorTypeValidation, "winid must be an integer"); -- cgit