fix CVE-2021-44647 CVE-2022-28805
This commit is contained in:
parent
b7b0964380
commit
2c7a3fbc76
24
backport-CVE-2021-44647.patch
Normal file
24
backport-CVE-2021-44647.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
From 1de95e97ef65632a88e08b6184bd9d1ceba7ec2f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
|
||||||
|
Date: Fri, 10 Dec 2021 10:53:54 -0300
|
||||||
|
Subject: [PATCH] Bug: Lua stack still active when closing a state
|
||||||
|
|
||||||
|
---
|
||||||
|
src/lstate.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/lstate.c b/src/lstate.c
|
||||||
|
index c5e3b43..38da773 100644
|
||||||
|
--- a/src/lstate.c
|
||||||
|
+++ b/src/lstate.c
|
||||||
|
@@ -271,6 +271,7 @@ static void close_state (lua_State *L) {
|
||||||
|
if (!completestate(g)) /* closing a partially built state? */
|
||||||
|
luaC_freeallobjects(L); /* jucst collect its objects */
|
||||||
|
else { /* closing a fully built state */
|
||||||
|
+ L->ci = &L->base_ci; /* unwind CallInfo list */
|
||||||
|
luaD_closeprotected(L, 1, LUA_OK); /* close all upvalues */
|
||||||
|
luaC_freeallobjects(L); /* collect all objects */
|
||||||
|
luai_userstateclose(L);
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
46
backport-CVE-2022-28805.patch
Normal file
46
backport-CVE-2022-28805.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
From 1f3c6f4534c6411313361697d98d1145a1f030fa Mon Sep 17 00:00:00 2001
|
||||||
|
From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
|
||||||
|
Date: Tue, 15 Feb 2022 12:28:46 -0300
|
||||||
|
Subject: [PATCH] Bug: Lua can generate wrong code when _ENV is <const>
|
||||||
|
|
||||||
|
---
|
||||||
|
lua-5.4.3-tests/attrib.lua | 10 ++++++++++
|
||||||
|
src/lparser.c | 1 +
|
||||||
|
2 files changed, 11 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lua-5.4.3-tests/attrib.lua b/lua-5.4.3-tests/attrib.lua
|
||||||
|
index b1076c7..83821c0 100644
|
||||||
|
--- a/lua-5.4.3-tests/attrib.lua
|
||||||
|
+++ b/lua-5.4.3-tests/attrib.lua
|
||||||
|
@@ -434,6 +434,16 @@ a.aVeryLongName012345678901234567890123456789012345678901234567890123456789 ==
|
||||||
|
10)
|
||||||
|
|
||||||
|
|
||||||
|
+do
|
||||||
|
+ -- _ENV constant
|
||||||
|
+ local function foo ()
|
||||||
|
+ local _ENV <const> = 11
|
||||||
|
+ X = "hi"
|
||||||
|
+ end
|
||||||
|
+ local st, msg = pcall(foo)
|
||||||
|
+ assert(not st and string.find(msg, "number"))
|
||||||
|
+end
|
||||||
|
+
|
||||||
|
|
||||||
|
-- test of large float/integer indices
|
||||||
|
|
||||||
|
diff --git a/src/lparser.c b/src/lparser.c
|
||||||
|
index 284ef1f..0626833 100644
|
||||||
|
--- a/src/lparser.c
|
||||||
|
+++ b/src/lparser.c
|
||||||
|
@@ -457,6 +457,7 @@ static void singlevar (LexState *ls, expdesc *var) {
|
||||||
|
expdesc key;
|
||||||
|
singlevaraux(fs, ls->envn, var, 1); /* get environment variable */
|
||||||
|
lua_assert(var->k != VVOID); /* this one must exist */
|
||||||
|
+ luaK_exp2anyregup(fs, var); /* but could be a constant */
|
||||||
|
codestring(&key, varname); /* key is variable name */
|
||||||
|
luaK_indexed(fs, var, &key); /* env[varname] */
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
9
lua.spec
9
lua.spec
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Name: lua
|
Name: lua
|
||||||
Version: 5.4.3
|
Version: 5.4.3
|
||||||
Release: 5
|
Release: 6
|
||||||
Summary: A powerful, efficient, lightweight, embeddable scripting language
|
Summary: A powerful, efficient, lightweight, embeddable scripting language
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: http://www.lua.org/
|
URL: http://www.lua.org/
|
||||||
@ -24,6 +24,8 @@ Patch1: lua-5.3.0-idsize.patch
|
|||||||
Patch2: lua-5.2.2-configure-linux.patch
|
Patch2: lua-5.2.2-configure-linux.patch
|
||||||
Patch3: lua-5.3.0-configure-compat-module.patch
|
Patch3: lua-5.3.0-configure-compat-module.patch
|
||||||
Patch6000: backport-CVE-2021-43519.patch
|
Patch6000: backport-CVE-2021-43519.patch
|
||||||
|
Patch6001: backport-CVE-2021-44647.patch
|
||||||
|
Patch6002: backport-CVE-2022-28805.patch
|
||||||
|
|
||||||
BuildRequires: automake autoconf libtool readline-devel ncurses-devel
|
BuildRequires: automake autoconf libtool readline-devel ncurses-devel
|
||||||
|
|
||||||
@ -57,6 +59,8 @@ mv src/luaconf.h src/luaconf.h.template.in
|
|||||||
%patch2 -p1 -z .configure-linux
|
%patch2 -p1 -z .configure-linux
|
||||||
%patch3 -p1 -z .configure-compat-all
|
%patch3 -p1 -z .configure-compat-all
|
||||||
%patch6000 -p1
|
%patch6000 -p1
|
||||||
|
%patch6001 -p1
|
||||||
|
%patch6002 -p1
|
||||||
|
|
||||||
# Put proper version in configure.ac, patch0 hardcodes 5.3.0
|
# Put proper version in configure.ac, patch0 hardcodes 5.3.0
|
||||||
sed -i 's|5.3.0|%{version}|g' configure.ac
|
sed -i 's|5.3.0|%{version}|g' configure.ac
|
||||||
@ -131,6 +135,9 @@ LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_libdir} $RPM_BUILD_ROOT/%{_bindir}/lua -e"_U=
|
|||||||
%{_mandir}/man1/lua*.1*
|
%{_mandir}/man1/lua*.1*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Apr 15 2022 shixuantong <shixuantong@h-partners.com> - 5.4.3-6
|
||||||
|
- fix CVE-2021-44647 CVE-2022-28805
|
||||||
|
|
||||||
* Thu Apr 14 2022 shixuantong <shixuantong@h-partners.com> - 5.4.3-5
|
* Thu Apr 14 2022 shixuantong <shixuantong@h-partners.com> - 5.4.3-5
|
||||||
- fix CVE-2021-43519 patch error
|
- fix CVE-2021-43519 patch error
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user