代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/byacc 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From 162549f599c4460bcefc1526cfa014fec626ebc5 Mon Sep 17 00:00:00 2001
From: zhoupengcheng <zhoupengcheng11@huawei.com>
Date: Sat, 26 Nov 2022 18:27:48 +0800
Subject: [PATCH] fix CVE-2021-33641
the global variable:cptr use-after-free in more_curly(),
save original line in more_curly() in case get new line to fix
CVE-2021-33641.
---
reader.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/reader.c b/reader.c
index 37dc2cb..2a1dfe5 100644
--- a/reader.c
+++ b/reader.c
@@ -1027,9 +1027,16 @@ trim_blanks(char *buffer)
static int
more_curly(void)
{
- char *save = cptr;
+
int result = 0;
int finish = 0;
+ FILE *f = input_file;
+ long int old_pos = ftell(f);
+ int save_linesize = linesize;
+ char *save_line = TMALLOC(char, linesize);
+ NO_SPACE(save_line);
+ char *save_cptr = save_line + (cptr - line);
+ memcpy(save_line, line, linesize);
do
{
switch (next_inline())
@@ -1046,7 +1053,15 @@ more_curly(void)
++cptr;
}
while (!finish);
- cptr = save;
+
+ // in case of next_inline malloc new line space
+ free(line);
+ cptr = save_cptr;
+ line = save_line;
+ linesize = save_linesize;
+ // Since get_line also move the postion in file forward
+ // we need to move it back
+ fseek(f, old_pos, SEEK_SET);
return result;
}
--
2.27.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。