Projects
openEuler:Mainline
vim
_service:tar_scm:backport-CVE-2022-2874.patch
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-CVE-2022-2874.patch of Package vim
From 4875d6ab068f09df88d24d81de40dcd8d56e243d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar <Bram@vim.org> Date: Wed, 17 Aug 2022 15:55:51 +0100 Subject: [PATCH] patch 9.0.0224: Using NULL pointer when skipping compiled code Problem: Using NULL pointer when skipping compiled code. Solution: Check for skipping. --- src/testdir/test_vim9_script.vim | 13 +++++++++++++ src/vim9compile.c | 14 ++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index fc0ef15..75b3e9c 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -2097,6 +2097,19 @@ def Test_for_skipped_block() v9.CheckDefAndScriptSuccess(lines) enddef +def Test_skipped_redir() + var lines =<< trim END + def T() + if 0 + redir =>l[0] + redir END + endif + enddef + defcompile + END + v9.CheckScriptSuccess(lines) +enddef + def Test_for_loop() var lines =<< trim END var result = '' diff --git a/src/vim9compile.c b/src/vim9compile.c index fb39997..a8fa5dc 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -1157,11 +1157,14 @@ generate_loadvar( generate_LOADV(cctx, name + 2); break; case dest_local: - if (lvar->lv_from_outer > 0) - generate_LOADOUTER(cctx, lvar->lv_idx, lvar->lv_from_outer, + if (cctx->ctx_skip != SKIP_YES) + { + if (lvar->lv_from_outer > 0) + generate_LOADOUTER(cctx, lvar->lv_idx, lvar->lv_from_outer, type); - else - generate_LOAD(cctx, ISN_LOAD, lvar->lv_idx, NULL, type); + else + generate_LOAD(cctx, ISN_LOAD, lvar->lv_idx, NULL, type); + } break; case dest_expr: // list or dict value should already be on the stack. @@ -1944,6 +1947,9 @@ compile_assign_unlet( } } + if (cctx->ctx_skip == SKIP_YES) + return OK; + // Load the dict or list. On the stack we then have: // - value (for assignment, not for :unlet) // - index -- 2.36.1
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2