From de770432e093bd5f811f124d0726b03b5fa47ffd Mon Sep 17 00:00:00 2001 From: Michal Domonkos Date: Tue, 14 Apr 2026 13:30:22 +0200 Subject: [PATCH] Update to 5.4.8 The tests tarball was generated from a local https://github.com/lua/lua checkout as follows: $ git checkout v5.4.8 $ cd testes/ $ ./packtests lua-5.4.8 Resolves: RHEL-68067 --- .gitignore | 2 ++ lua-5.4.6-big-endian-fix.patch | 24 ------------- lua-5.4.6-bug1.patch | 66 ---------------------------------- lua.spec | 14 ++++---- sources | 2 ++ 5 files changed, 10 insertions(+), 98 deletions(-) delete mode 100644 lua-5.4.6-big-endian-fix.patch delete mode 100644 lua-5.4.6-bug1.patch diff --git a/.gitignore b/.gitignore index 8cbbb3c..bf23225 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,5 @@ lua-5.1.4/ /lua-5.3.6.tar.gz /lua-5.4.6.tar.gz /lua-5.4.6-tests.tar.gz +/lua-5.4.8.tar.gz +/lua-5.4.8-tests.tar.gz diff --git a/lua-5.4.6-big-endian-fix.patch b/lua-5.4.6-big-endian-fix.patch deleted file mode 100644 index dbd7970..0000000 --- a/lua-5.4.6-big-endian-fix.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up lua-5.4.6/lua-5.4.6-tests/calls.lua.big-endian-fix lua-5.4.6/lua-5.4.6-tests/calls.lua ---- lua-5.4.6/lua-5.4.6-tests/calls.lua.big-endian-fix 2023-08-01 09:21:13.212388469 -0400 -+++ lua-5.4.6/lua-5.4.6-tests/calls.lua 2023-08-01 09:21:34.552557272 -0400 -@@ -342,20 +342,6 @@ do -- another bug (in 5.4.0) - end - - --do -- another bug (since 5.2) -- -- corrupted binary dump: list of upvalue names is larger than number -- -- of upvalues, overflowing the array of upvalues. -- local code = -- "\x1b\x4c\x75\x61\x54\x00\x19\x93\x0d\x0a\x1a\x0a\x04\x08\x08\x78\x56\z -- \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x77\x40\x00\x86\x40\z -- \x74\x65\x6d\x70\x81\x81\x01\x00\x02\x82\x48\x00\x02\x00\xc7\x00\x01\z -- \x00\x80\x80\x80\x82\x00\x00\x80\x81\x82\x78\x80\x82\x81\x86\x40\x74\z -- \x65\x6d\x70" -- -- assert(load(code)) -- segfaults in previous versions --end -- -- - x = string.dump(load("x = 1; return x")) - a = assert(load(read1(x), nil, "b")) - assert(a() == 1 and _G.x == 1) diff --git a/lua-5.4.6-bug1.patch b/lua-5.4.6-bug1.patch deleted file mode 100644 index 689ad98..0000000 --- a/lua-5.4.6-bug1.patch +++ /dev/null @@ -1,66 +0,0 @@ -From f623b969325be736297bc1dff48e763c08778243 Mon Sep 17 00:00:00 2001 -From: Roberto Ierusalimschy -Date: Wed, 14 Jun 2023 14:38:07 -0300 -Subject: [PATCH] Bug: read overflow in 'l_strcmp' - -Equality according to 'strcoll' does not imply that strings have -the same length. ---- - lvm.c | 38 ++++++++++++++++++++------------------ - 1 file changed, 20 insertions(+), 18 deletions(-) - -diff --git a/src/lvm.c b/src/lvm.c -index 4c300a87a..2b437bdfd 100644 ---- a/src/lvm.c -+++ b/src/lvm.c -@@ -366,30 +366,32 @@ void luaV_finishset (lua_State *L, const TValue *t, TValue *key, - - - /* --** Compare two strings 'ls' x 'rs', returning an integer less-equal- --** -greater than zero if 'ls' is less-equal-greater than 'rs'. -+** Compare two strings 'ts1' x 'ts2', returning an integer less-equal- -+** -greater than zero if 'ts1' is less-equal-greater than 'ts2'. - ** The code is a little tricky because it allows '\0' in the strings --** and it uses 'strcoll' (to respect locales) for each segments --** of the strings. -+** and it uses 'strcoll' (to respect locales) for each segment -+** of the strings. Note that segments can compare equal but still -+** have different lengths. - */ --static int l_strcmp (const TString *ls, const TString *rs) { -- const char *l = getstr(ls); -- size_t ll = tsslen(ls); -- const char *r = getstr(rs); -- size_t lr = tsslen(rs); -+static int l_strcmp (const TString *ts1, const TString *ts2) { -+ const char *s1 = getstr(ts1); -+ size_t rl1 = tsslen(ts1); /* real length */ -+ const char *s2 = getstr(ts2); -+ size_t rl2 = tsslen(ts2); - for (;;) { /* for each segment */ -- int temp = strcoll(l, r); -+ int temp = strcoll(s1, s2); - if (temp != 0) /* not equal? */ - return temp; /* done */ - else { /* strings are equal up to a '\0' */ -- size_t len = strlen(l); /* index of first '\0' in both strings */ -- if (len == lr) /* 'rs' is finished? */ -- return (len == ll) ? 0 : 1; /* check 'ls' */ -- else if (len == ll) /* 'ls' is finished? */ -- return -1; /* 'ls' is less than 'rs' ('rs' is not finished) */ -- /* both strings longer than 'len'; go on comparing after the '\0' */ -- len++; -- l += len; ll -= len; r += len; lr -= len; -+ size_t zl1 = strlen(s1); /* index of first '\0' in 's1' */ -+ size_t zl2 = strlen(s2); /* index of first '\0' in 's2' */ -+ if (zl2 == rl2) /* 's2' is finished? */ -+ return (zl1 == rl1) ? 0 : 1; /* check 's1' */ -+ else if (zl1 == rl1) /* 's1' is finished? */ -+ return -1; /* 's1' is less than 's2' ('s2' is not finished) */ -+ /* both strings longer than 'zl'; go on comparing after the '\0' */ -+ zl1++; zl2++; -+ s1 += zl1; rl1 -= zl1; s2 += zl2; rl2 -= zl2; - } - } - } diff --git a/lua.spec b/lua.spec index c8bb217..6517b5b 100644 --- a/lua.spec +++ b/lua.spec @@ -1,6 +1,6 @@ %global major_version 5.4 # Normally, this is the same as version, but... not always. -%global test_version 5.4.6 +%global test_version 5.4.8 # If you are incrementing major_version, enable bootstrapping and adjust accordingly. # Version should be the latest prior build. If you don't do this, RPM will break and # everything will grind to a halt. @@ -13,8 +13,8 @@ Name: lua -Version: %{major_version}.6 -Release: 7%{?dist} +Version: %{major_version}.8 +Release: 1%{?dist} Summary: Powerful light-weight programming language License: MIT URL: https://www.lua.org/ @@ -36,9 +36,6 @@ Patch4: %{name}-5.3.0-configure-compat-module.patch Patch5: %{name}-5.3.0-autotoolize.patch Patch6: %{name}-5.3.5-luac-shared-link-fix.patch %endif -Patch7: lua-5.4.6-big-endian-fix.patch -# https://www.lua.org/bugs.html -Patch8: lua-5.4.6-bug1.patch BuildRequires: automake autoconf libtool readline-devel ncurses-devel BuildRequires: make @@ -95,8 +92,6 @@ mv src/luaconf.h src/luaconf.h.template.in # Put proper version in configure.ac, patch0 hardcodes 5.3.0 sed -i 's|5.3.0|%{version}|g' configure.ac autoreconf -ifv -%patch -P7 -p1 -b .big-endian-fix -%patch -P8 -p1 -b .bug1 %if 0%{?bootstrap} @@ -211,6 +206,9 @@ popd %{_libdir}/*.a %changelog +* Tue Apr 14 2026 Michal Domonkos - 5.4.8-1 +- Update to 5.4.8 (RHEL-68067) + * Tue Oct 29 2024 Troy Dawson - 5.4.6-7 - Bump release for October 2024 mass rebuild: Resolves: RHEL-64018 diff --git a/sources b/sources index dcdd07b..ba4d068 100644 --- a/sources +++ b/sources @@ -1,3 +1,5 @@ SHA512 (lua-5.3.6.tar.gz) = ccc380d5e114d54504de0bfb0321ca25ec325d6ff1bfee44b11870b660762d1a9bf120490c027a0088128b58bb6b5271bbc648400cab84d2dc22b512c4841681 SHA512 (lua-5.4.6.tar.gz) = d90c6903355ee1309cb0d92a8a024522ff049091a117ea21efb585b5de35776191cd67d17a65b18c2f9d374795b7c944f047576f0e3fe818d094b26f0e4845c5 SHA512 (lua-5.4.6-tests.tar.gz) = 428b50b9546d8ad81a7c7e74582135a317d27f0c65307f899ec6de50d71c6220672c53648f999b3019503c8fa6f0c1542131621a6bab9e09a7ef2e2919183b2d +SHA512 (lua-5.4.8.tar.gz) = 875ad1f6df3ba63722b5069564c9d3a4057b4c3564c691061bb49cf6cdf5d2e303f05762bd46797b444aaf992c03021f423df142123eebf86751fd77edaf8060 +SHA512 (lua-5.4.8-tests.tar.gz) = 1e5a3379a5a184a2c8c80df1a825ed0485180f7c5c7362b2c99cdbff20cb36f1c487123e117721f0003f0b6efc13e3b8db82c2675fda383bfe1291cd04b7a61d