Compare commits
No commits in common. "c8s" and "c9s" have entirely different histories.
|
@ -1,2 +1,22 @@
|
||||||
SOURCES/lua-5.3.4-tests.tar.gz
|
lua-5.1.4.tar.gz
|
||||||
SOURCES/lua-5.3.4.tar.gz
|
lua-5.1.4/
|
||||||
|
.build*
|
||||||
|
*.src.rpm
|
||||||
|
/x86_64/
|
||||||
|
/i386/
|
||||||
|
/lua-5.2.2.tar.gz
|
||||||
|
/lua-5.2.3.tar.gz
|
||||||
|
/lua-5.3.0.tar.gz
|
||||||
|
/lua-5.3.2-tests.tar.gz
|
||||||
|
/lua-5.3.2.tar.gz
|
||||||
|
/lua-5.3.3.tar.gz
|
||||||
|
/lua-5.3.3-tests.tar.gz
|
||||||
|
/lua-5.3.4.tar.gz
|
||||||
|
/lua-5.3.4-tests.tar.gz
|
||||||
|
/lua-5.3.5.tar.gz
|
||||||
|
/lua-5.4.0.tar.gz
|
||||||
|
/lua-5.4.0-tests.tar.gz
|
||||||
|
/lua-5.4.1-tests.tar.gz
|
||||||
|
/lua-5.4.1.tar.gz
|
||||||
|
/lua-5.4.2.tar.gz
|
||||||
|
/lua-5.4.2-tests.tar.gz
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
d0d59cfb0d2eac18a3134917c08246c854af67c5 SOURCES/lua-5.3.4-tests.tar.gz
|
112eb10ff04d1b4c9898e121d6bdf54a81482447 lua-5.3.5.tar.gz
|
||||||
79790cfd40e09ba796b01a571d4d63b52b1cd950 SOURCES/lua-5.3.4.tar.gz
|
03c27684b9d5d9783fb79a7c836ba1cdc5f309cd lua-5.4.4.tar.gz
|
||||||
|
062af7753cd387eea23052fbcad26616a48acadc lua-5.4.4-tests.tar.gz
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
--- a/src/lapi.c
|
||||||
|
+++ b/src/lapi.c
|
||||||
|
@@ -1285,14 +1285,14 @@ LUA_API void *lua_upvalueid (lua_State *
|
||||||
|
|
||||||
|
LUA_API void lua_upvaluejoin (lua_State *L, int fidx1, int n1,
|
||||||
|
int fidx2, int n2) {
|
||||||
|
- LClosure *f1;
|
||||||
|
- UpVal **up1 = getupvalref(L, fidx1, n1, &f1);
|
||||||
|
+ UpVal **up1 = getupvalref(L, fidx1, n1, NULL); /* the last parameter not needed */
|
||||||
|
UpVal **up2 = getupvalref(L, fidx2, n2, NULL);
|
||||||
|
+ if (*up1 == *up2) return; /* Already joined */
|
||||||
|
+ (*up2)->refcount++;
|
||||||
|
+ if (upisopen(*up2)) (*up2)->u.open.touched = 1;
|
||||||
|
+ luaC_upvalbarrier(L, *up2);
|
||||||
|
luaC_upvdeccount(L, *up1);
|
||||||
|
*up1 = *up2;
|
||||||
|
- (*up1)->refcount++;
|
||||||
|
- if (upisopen(*up1)) (*up1)->u.open.touched = 1;
|
||||||
|
- luaC_upvalbarrier(L, *up1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- lua-5.3.4/src/lapi.c.orig 2019-06-03 17:29:46.376205064 +0200
|
|
||||||
+++ lua-5.3.4/src/lapi.c 2019-06-03 17:31:08.869905663 +0200
|
|
||||||
@@ -1289,6 +1289,8 @@
|
|
||||||
LClosure *f1;
|
|
||||||
UpVal **up1 = getupvalref(L, fidx1, n1, &f1);
|
|
||||||
UpVal **up2 = getupvalref(L, fidx2, n2, NULL);
|
|
||||||
+ if (*up1 == *up2)
|
|
||||||
+ return;
|
|
||||||
luaC_upvdeccount(L, *up1);
|
|
||||||
*up1 = *up2;
|
|
||||||
(*up1)->refcount++;
|
|
|
@ -1,30 +0,0 @@
|
||||||
From a585eae6e7ada1ca9271607a4f48dfb17868ab7b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
|
|
||||||
Date: Mon, 27 Jul 2020 12:01:38 -0300
|
|
||||||
Subject: [PATCH] Fixed bug: Negation overflow in getlocal/setlocal
|
|
||||||
|
|
||||||
Adjusted for 5.3
|
|
||||||
|
|
||||||
---
|
|
||||||
diff --git a/src/ldebug.c b/src/ldebug.c
|
|
||||||
index f1835890..a44e5439 100644
|
|
||||||
--- a/src/ldebug.c
|
|
||||||
+++ b/src/ldebug.c
|
|
||||||
@@ -133,7 +133,7 @@ static const char *upvalname (Proto *p, int uv) {
|
|
||||||
|
|
||||||
static const char *findvararg (CallInfo *ci, int n, StkId *pos) {
|
|
||||||
int nparams = clLvalue(ci->func)->p->numparams;
|
|
||||||
- if (n >= cast_int(ci->u.l.base - ci->func) - nparams)
|
|
||||||
+ if (n < cast_int(ci->u.l.base - ci->func) - nparams) /* 'n' is negative */
|
|
||||||
return NULL; /* no such vararg */
|
|
||||||
else {
|
|
||||||
*pos = ci->func + nparams + n;
|
|
||||||
@@ -148,7 +148,7 @@ static const char *findlocal (lua_State *L, CallInfo *ci, int n,
|
|
||||||
StkId base;
|
|
||||||
if (isLua(ci)) {
|
|
||||||
if (n < 0) /* access to vararg values? */
|
|
||||||
- return findvararg(ci, -n, pos);
|
|
||||||
+ return findvararg(ci, n, pos);
|
|
||||||
else {
|
|
||||||
base = ci->u.l.base;
|
|
||||||
name = luaF_getlocalname(ci_func(ci)->p, n, currentpc(ci));
|
|
|
@ -1,13 +0,0 @@
|
||||||
%lua_version %{lua: print(string.sub(_VERSION, 5))}
|
|
||||||
|
|
||||||
%lua_libdir %{_libdir}/lua/%{lua_version}
|
|
||||||
%lua_pkgdir %{_datadir}/lua/%{lua_version}
|
|
||||||
|
|
||||||
%lua_requires \
|
|
||||||
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7 \
|
|
||||||
Requires: lua(abi) = %{lua_version} \
|
|
||||||
%else \
|
|
||||||
Requires: lua >= %{lua_version} \
|
|
||||||
Requires: lua < %{lua: os.setlocale('C'); print(string.sub(_VERSION, 5) + 0.1)} \
|
|
||||||
%endif \
|
|
||||||
%{nil}
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
--- !Policy
|
||||||
|
product_versions:
|
||||||
|
- rhel-9
|
||||||
|
decision_context: osci_compose_gate
|
||||||
|
rules:
|
||||||
|
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
|
|
@ -0,0 +1,34 @@
|
||||||
|
diff -up lua-5.2.2/configure.ac.compat-module lua-5.2.2/configure.ac
|
||||||
|
--- lua-5.2.2/configure.ac.compat-module 2013-05-10 10:16:05.344137597 -0400
|
||||||
|
+++ lua-5.2.2/configure.ac 2013-05-10 10:16:05.357137596 -0400
|
||||||
|
@@ -11,6 +11,19 @@ AC_PROG_CC
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
AC_ARG_WITH(
|
||||||
|
+ [compat-module],
|
||||||
|
+ [AC_HELP_STRING([--with-compat-module], [Enable LUA_COMPAT_MODULE functions [default=no]])],
|
||||||
|
+ [use_compat_module=$withval],
|
||||||
|
+ [use_compat_module=no]
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+COMPAT_DEFS="#undef LUA_COMPAT_ALL"
|
||||||
|
+if test "x$use_compat_module" == "xyes"; then
|
||||||
|
+ COMPAT_DEFS="#define LUA_COMPAT_ALL"
|
||||||
|
+fi
|
||||||
|
+AC_SUBST(COMPAT_DEFS)
|
||||||
|
+
|
||||||
|
+AC_ARG_WITH(
|
||||||
|
[readline],
|
||||||
|
[AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
|
||||||
|
[use_readline=$withval],
|
||||||
|
diff -up lua-5.2.2/src/luaconf.h.template.in.compat-module lua-5.2.2/src/luaconf.h.template.in
|
||||||
|
--- lua-5.2.2/src/luaconf.h.template.in.compat-module 2013-05-10 10:25:42.586116963 -0400
|
||||||
|
+++ lua-5.2.2/src/luaconf.h.template.in 2013-05-10 10:26:29.957115269 -0400
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
@LUA_DL_DEFS@
|
||||||
|
@LUA_BUILD_AS_DLL_DEFS@
|
||||||
|
@READLINE_DEFS@
|
||||||
|
+@COMPAT_DEFS@
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/src/luaconf.h.template.in b/src/luaconf.h.template.in
|
||||||
|
index a427c53..6f1d567 100644
|
||||||
|
--- a/src/luaconf.h.template.in
|
||||||
|
+++ b/src/luaconf.h.template.in
|
||||||
|
@@ -206,7 +206,7 @@
|
||||||
|
@* of a function in debug information.
|
||||||
|
** CHANGE it if you want a different size.
|
||||||
|
*/
|
||||||
|
-#define LUA_IDSIZE 60
|
||||||
|
+#define LUA_IDSIZE 512
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
|
@ -0,0 +1,54 @@
|
||||||
|
diff -up lua-5.2.2/src/lopcodes.c.luac-shared lua-5.2.2/src/lopcodes.c
|
||||||
|
--- lua-5.2.2/src/lopcodes.c.luac-shared 2012-05-14 09:34:18.000000000 -0400
|
||||||
|
+++ lua-5.2.2/src/lopcodes.c 2013-05-09 14:36:30.874581104 -0400
|
||||||
|
@@ -14,7 +14,7 @@
|
||||||
|
|
||||||
|
/* ORDER OP */
|
||||||
|
|
||||||
|
-LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES+1] = {
|
||||||
|
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1] = {
|
||||||
|
"MOVE",
|
||||||
|
"LOADK",
|
||||||
|
"LOADKX",
|
||||||
|
@@ -61,7 +61,7 @@ LUAI_DDEF const char *const luaP_opnames
|
||||||
|
|
||||||
|
#define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m))
|
||||||
|
|
||||||
|
-LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
|
||||||
|
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES] = {
|
||||||
|
/* T A B C mode opcode */
|
||||||
|
opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */
|
||||||
|
,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */
|
||||||
|
diff -up lua-5.2.2/src/lopcodes.h.luac-shared lua-5.2.2/src/lopcodes.h
|
||||||
|
--- lua-5.2.2/src/lopcodes.h.luac-shared 2013-05-09 14:37:14.718581762 -0400
|
||||||
|
+++ lua-5.2.2/src/lopcodes.h 2013-05-09 14:37:40.998582156 -0400
|
||||||
|
@@ -269,7 +269,7 @@ enum OpArgMask {
|
||||||
|
OpArgK /* argument is a constant or register/constant */
|
||||||
|
};
|
||||||
|
|
||||||
|
-LUAI_DDEC const lu_byte luaP_opmodes[NUM_OPCODES];
|
||||||
|
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES];
|
||||||
|
|
||||||
|
#define getOpMode(m) (cast(enum OpMode, luaP_opmodes[m] & 3))
|
||||||
|
#define getBMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3))
|
||||||
|
@@ -278,7 +278,7 @@ LUAI_DDEC const lu_byte luaP_opmodes[NUM
|
||||||
|
#define testTMode(m) (luaP_opmodes[m] & (1 << 7))
|
||||||
|
|
||||||
|
|
||||||
|
-LUAI_DDEC const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
|
||||||
|
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
|
||||||
|
|
||||||
|
|
||||||
|
/* number of list items to accumulate before a SETLIST instruction */
|
||||||
|
diff -up lua-5.2.2/src/lundump.h.luac-shared lua-5.2.2/src/lundump.h
|
||||||
|
--- lua-5.2.2/src/lundump.h.luac-shared 2012-05-08 09:53:33.000000000 -0400
|
||||||
|
+++ lua-5.2.2/src/lundump.h 2013-05-09 14:36:30.874581104 -0400
|
||||||
|
@@ -17,7 +17,7 @@ LUAI_FUNC Closure* luaU_undump (lua_Stat
|
||||||
|
LUAI_FUNC void luaU_header (lu_byte* h);
|
||||||
|
|
||||||
|
/* dump one chunk; from ldump.c */
|
||||||
|
-LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip);
|
||||||
|
+LUA_API int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip);
|
||||||
|
|
||||||
|
/* data to catch conversion errors */
|
||||||
|
#define LUAC_TAIL "\x19\x93\r\n\x1a\n"
|
|
@ -0,0 +1,204 @@
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..8d968c4
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+SUBDIRS = src doc
|
||||||
|
+
|
||||||
|
+EXTRA_DIST = README
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..3af6625
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -0,0 +1,69 @@
|
||||||
|
+AC_PREREQ(2.59)
|
||||||
|
+AC_INIT([lua], [5.2.3], [https://bugzilla.redhat.com/], [lua-at], [http://www.lua.org])
|
||||||
|
+AC_SUBST([MAJOR_VERSION], [5.2])
|
||||||
|
+
|
||||||
|
+AC_CONFIG_HEADERS([config.h])
|
||||||
|
+AC_CONFIG_SRCDIR([src/lapi.c])
|
||||||
|
+
|
||||||
|
+AM_INIT_AUTOMAKE([1.9 foreign])
|
||||||
|
+
|
||||||
|
+AC_PROG_CC
|
||||||
|
+AC_PROG_LIBTOOL
|
||||||
|
+
|
||||||
|
+AC_ARG_WITH(
|
||||||
|
+ [readline],
|
||||||
|
+ [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
|
||||||
|
+ [use_readline=$withval],
|
||||||
|
+ [use_readline=yes]
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+LUA_LIBS="-lm"
|
||||||
|
+
|
||||||
|
+# Check for readline
|
||||||
|
+READLINE_DEFS="#undef LUA_USE_READLINE"
|
||||||
|
+if test "x$use_readline" == "xyes"; then
|
||||||
|
+ AC_CHECK_LIB([readline], [readline], [:], [use_readline=no], [-lncurses])
|
||||||
|
+ AC_CHECK_HEADERS([readline/readline.h readline/history.h], [], [use_readline=no])
|
||||||
|
+ if test "x$use_readline" == "xno"; then
|
||||||
|
+ AC_MSG_WARN([readline headers could not be found, disabling readline support])
|
||||||
|
+ else
|
||||||
|
+ READLINE_DEFS="#define LUA_USE_READLINE"
|
||||||
|
+ READLINE_LIBS="-lreadline -lncurses"
|
||||||
|
+ fi
|
||||||
|
+fi
|
||||||
|
+AC_SUBST(READLINE_DEFS)
|
||||||
|
+AC_SUBST(READLINE_LIBS)
|
||||||
|
+
|
||||||
|
+case "$host" in
|
||||||
|
+ *-mingw*) use_os=win32 ;;
|
||||||
|
+ *-darwin*) use_os=macosx ;;
|
||||||
|
+ *) use_os=posix ;;
|
||||||
|
+esac
|
||||||
|
+
|
||||||
|
+POSIX_DEFS="#undef LUA_USE_POSIX"
|
||||||
|
+LUA_DL_DEFS="#undef LUA_USE_DLOPEN"
|
||||||
|
+LUA_BUILD_AS_DLL_DEFS="#undef LUA_BUILD_AS_DLL"
|
||||||
|
+
|
||||||
|
+if test "x$use_os" == "xwin32"; then
|
||||||
|
+ LUA_BUILD_AS_DLL_DEFS="#define LUA_BUILD_AS_DLL"
|
||||||
|
+elif test "x$use_os" == "xmacosx"; then
|
||||||
|
+ POSIX_DEFS="#define LUA_USE_POSIX"
|
||||||
|
+ LUA_DL_DEFS="#define LUA_DL_DYLD"
|
||||||
|
+elif test "x$use_os" == "xposix"; then
|
||||||
|
+ POSIX_DEFS="#define LUA_USE_POSIX"
|
||||||
|
+ LUA_DL_DEFS="#define LUA_DL_DLOPEN"
|
||||||
|
+ LUA_LIBS="$LUA_LIBS -ldl"
|
||||||
|
+fi
|
||||||
|
+AC_SUBST(POSIX_DEFS)
|
||||||
|
+AC_SUBST(LUA_DL_DEFS)
|
||||||
|
+AC_SUBST(LUA_BUILD_AS_DLL_DEFS)
|
||||||
|
+
|
||||||
|
+AC_SUBST(LUA_LIBS)
|
||||||
|
+
|
||||||
|
+AC_CONFIG_FILES([Makefile
|
||||||
|
+ src/Makefile
|
||||||
|
+ src/lua.pc
|
||||||
|
+ src/luaconf.h.template
|
||||||
|
+ doc/Makefile
|
||||||
|
+])
|
||||||
|
+AC_OUTPUT
|
||||||
|
diff --git a/doc/Makefile.am b/doc/Makefile.am
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..3705696
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/doc/Makefile.am
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+man1_MANS = lua.1 luac.1
|
||||||
|
+
|
||||||
|
+EXTRA_DIST = \
|
||||||
|
+ contents.html logo.gif lua.1 luac.1 lua.css manual.css manual.html osi-certified-72x60.png readme.html
|
||||||
|
diff --git a/src/.gitignore b/src/.gitignore
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..0abd9dd
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/.gitignore
|
||||||
|
@@ -0,0 +1,5 @@
|
||||||
|
+lua
|
||||||
|
+lua.pc
|
||||||
|
+luac
|
||||||
|
+luaconf.h
|
||||||
|
+luaconf.h.template
|
||||||
|
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..6c7c79f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/Makefile.am
|
||||||
|
@@ -0,0 +1,46 @@
|
||||||
|
+AM_CFLAGS = -Wall
|
||||||
|
+
|
||||||
|
+include_HEADERS = lua.h lualib.h lauxlib.h lua.hpp
|
||||||
|
+
|
||||||
|
+nodist_include_HEADERS = luaconf.h
|
||||||
|
+
|
||||||
|
+lib_LTLIBRARIES = liblua.la
|
||||||
|
+liblua_la_LDFLAGS = -release @MAJOR_VERSION@
|
||||||
|
+liblua_la_SOURCES = \
|
||||||
|
+ lapi.c lauxlib.c lbaselib.c lbitlib.c lcode.c lcorolib.c lctype.c ldblib.c \
|
||||||
|
+ ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c \
|
||||||
|
+ loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c \
|
||||||
|
+ ltable.c ltablib.c ltm.c lundump.c lvm.c lzio.c \
|
||||||
|
+ lapi.h lcode.h lctype.h ldebug.h ldo.h lfunc.h lgc.h llex.h llimits.h \
|
||||||
|
+ lmem.h lobject.h lopcodes.h lparser.h lstate.h lstring.h ltable.h ltm.h \
|
||||||
|
+ lundump.h lvm.h lzio.h
|
||||||
|
+
|
||||||
|
+pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
+pkgconfig_DATA = lua.pc
|
||||||
|
+
|
||||||
|
+bin_PROGRAMS = lua luac
|
||||||
|
+
|
||||||
|
+lua_SOURCES = lua.c
|
||||||
|
+lua_LDADD = liblua.la @LUA_LIBS@ @READLINE_LIBS@
|
||||||
|
+lua_DEPENDENCIES = liblua.la
|
||||||
|
+
|
||||||
|
+luac_SOURCES = luac.c
|
||||||
|
+# Statically link liblua against luac since luac uses symbols not exported in liblua
|
||||||
|
+luac_LDADD = .libs/liblua.a @LUA_LIBS@
|
||||||
|
+luac_DEPENDENCIES = liblua.la
|
||||||
|
+
|
||||||
|
+EXTRA_DIST = luaconf.h.template
|
||||||
|
+BUILT_SOURCES = luaconf.h
|
||||||
|
+CLEANFILES = luaconf.h luaconf.h.template
|
||||||
|
+
|
||||||
|
+readline_defs = @READLINE_DEFS@
|
||||||
|
+
|
||||||
|
+edit = sed \
|
||||||
|
+ -e 's,%prefix%,$(prefix),g' \
|
||||||
|
+ -e 's,%lua_datadir%,$(datadir),g' \
|
||||||
|
+ -e 's,%lua_libdir%,$(libdir),g'
|
||||||
|
+
|
||||||
|
+luaconf.h : luaconf.h.template
|
||||||
|
+ rm -f $@ $@.tmp
|
||||||
|
+ $(edit) $< >$@.tmp
|
||||||
|
+ mv $@.tmp $@
|
||||||
|
diff --git a/src/lua.pc.in b/src/lua.pc.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..25faa8d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/lua.pc.in
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+V= @MAJOR_VERSION@
|
||||||
|
+R= @VERSION@
|
||||||
|
+prefix= @prefix@
|
||||||
|
+exec_prefix=${prefix}
|
||||||
|
+libdir= @libdir@
|
||||||
|
+includedir=${prefix}/include
|
||||||
|
+
|
||||||
|
+Name: Lua
|
||||||
|
+Description: An Extensible Extension Language
|
||||||
|
+Version: ${R}
|
||||||
|
+Requires:
|
||||||
|
+Libs: -llua @LUA_LIBS@
|
||||||
|
+Cflags: -I${includedir}
|
||||||
|
diff --git a/src/luaconf.h b/src/luaconf.h.template.in
|
||||||
|
--- a/src/luaconf.h.template.in
|
||||||
|
+++ b/src/luaconf.h.template.in
|
||||||
|
@@ -11,6 +11,11 @@
|
||||||
|
#include <limits.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
+@POSIX_DEFS@
|
||||||
|
+@LUA_DL_DEFS@
|
||||||
|
+@LUA_BUILD_AS_DLL_DEFS@
|
||||||
|
+@READLINE_DEFS@
|
||||||
|
+
|
||||||
|
|
||||||
|
/*
|
||||||
|
** ==================================================================
|
||||||
|
@@ -100,9 +105,9 @@
|
||||||
|
#else /* }{ */
|
||||||
|
|
||||||
|
#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR "/"
|
||||||
|
-#define LUA_ROOT "/usr/local/"
|
||||||
|
-#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR
|
||||||
|
-#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR
|
||||||
|
+#define LUA_ROOT "@prefix@/"
|
||||||
|
+#define LUA_LDIR "@pkgdatadir@/lua/" LUA_VDIR
|
||||||
|
+#define LUA_CDIR "@libdir@/lua/" LUA_VDIR
|
||||||
|
#define LUA_PATH_DEFAULT \
|
||||||
|
LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
|
||||||
|
LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" "./?.lua"
|
|
@ -0,0 +1,26 @@
|
||||||
|
diff -up lua-5.3.5/src/ldebug.c.CVE-2020-24370 lua-5.3.5/src/ldebug.c
|
||||||
|
--- lua-5.3.5/src/ldebug.c.CVE-2020-24370 2020-08-19 13:37:17.075859557 -0400
|
||||||
|
+++ lua-5.3.5/src/ldebug.c 2020-08-19 13:38:53.117779244 -0400
|
||||||
|
@@ -133,10 +133,11 @@ static const char *upvalname (Proto *p,
|
||||||
|
|
||||||
|
static const char *findvararg (CallInfo *ci, int n, StkId *pos) {
|
||||||
|
int nparams = clLvalue(ci->func)->p->numparams;
|
||||||
|
- if (n >= cast_int(ci->u.l.base - ci->func) - nparams)
|
||||||
|
+ int nvararg = cast_int(ci->u.l.base - ci->func) - nparams;
|
||||||
|
+ if (n <= -nvararg)
|
||||||
|
return NULL; /* no such vararg */
|
||||||
|
else {
|
||||||
|
- *pos = ci->func + nparams + n;
|
||||||
|
+ *pos = ci->func + nparams - n;
|
||||||
|
return "(*vararg)"; /* generic name for any vararg */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -148,7 +149,7 @@ static const char *findlocal (lua_State
|
||||||
|
StkId base;
|
||||||
|
if (isLua(ci)) {
|
||||||
|
if (n < 0) /* access to vararg values? */
|
||||||
|
- return findvararg(ci, -n, pos);
|
||||||
|
+ return findvararg(ci, n, pos);
|
||||||
|
else {
|
||||||
|
base = ci->u.l.base;
|
||||||
|
name = luaF_getlocalname(ci_func(ci)->p, n, currentpc(ci));
|
|
@ -0,0 +1,54 @@
|
||||||
|
diff -up lua-5.3.5/src/lopcodes.c.luac-shared lua-5.3.5/src/lopcodes.c
|
||||||
|
--- lua-5.3.5/src/lopcodes.c.luac-shared 2019-10-23 15:36:44.487204487 -0400
|
||||||
|
+++ lua-5.3.5/src/lopcodes.c 2019-10-23 15:37:44.029960930 -0400
|
||||||
|
@@ -17,7 +17,7 @@
|
||||||
|
|
||||||
|
/* ORDER OP */
|
||||||
|
|
||||||
|
-LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES+1] = {
|
||||||
|
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1] = {
|
||||||
|
"MOVE",
|
||||||
|
"LOADK",
|
||||||
|
"LOADKX",
|
||||||
|
@@ -71,7 +71,7 @@ LUAI_DDEF const char *const luaP_opnames
|
||||||
|
|
||||||
|
#define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m))
|
||||||
|
|
||||||
|
-LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
|
||||||
|
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES] = {
|
||||||
|
/* T A B C mode opcode */
|
||||||
|
opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */
|
||||||
|
,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */
|
||||||
|
diff -up lua-5.3.5/src/lopcodes.h.luac-shared lua-5.3.5/src/lopcodes.h
|
||||||
|
--- lua-5.3.5/src/lopcodes.h.luac-shared 2019-10-23 15:37:52.982773948 -0400
|
||||||
|
+++ lua-5.3.5/src/lopcodes.h 2019-10-23 15:38:17.861254367 -0400
|
||||||
|
@@ -278,7 +278,7 @@ enum OpArgMask {
|
||||||
|
OpArgK /* argument is a constant or register/constant */
|
||||||
|
};
|
||||||
|
|
||||||
|
-LUAI_DDEC const lu_byte luaP_opmodes[NUM_OPCODES];
|
||||||
|
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES];
|
||||||
|
|
||||||
|
#define getOpMode(m) (cast(enum OpMode, luaP_opmodes[m] & 3))
|
||||||
|
#define getBMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3))
|
||||||
|
@@ -287,7 +287,7 @@ LUAI_DDEC const lu_byte luaP_opmodes[NUM
|
||||||
|
#define testTMode(m) (luaP_opmodes[m] & (1 << 7))
|
||||||
|
|
||||||
|
|
||||||
|
-LUAI_DDEC const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
|
||||||
|
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
|
||||||
|
|
||||||
|
|
||||||
|
/* number of list items to accumulate before a SETLIST instruction */
|
||||||
|
diff -up lua-5.3.5/src/lundump.h.luac-shared lua-5.3.5/src/lundump.h
|
||||||
|
--- lua-5.3.5/src/lundump.h.luac-shared 2019-10-23 15:38:46.707651903 -0400
|
||||||
|
+++ lua-5.3.5/src/lundump.h 2019-10-23 15:39:07.044227180 -0400
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
LUAI_FUNC LClosure* luaU_undump (lua_State* L, ZIO* Z, const char* name);
|
||||||
|
|
||||||
|
/* dump one chunk; from ldump.c */
|
||||||
|
-LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w,
|
||||||
|
+LUA_API int luaU_dump (lua_State* L, const Proto* f, lua_Writer w,
|
||||||
|
void* data, int strip);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,22 @@
|
||||||
|
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>
|
||||||
|
|
||||||
|
---
|
||||||
|
lparser.c | 1 +
|
||||||
|
testes/attrib.lua | 10 ++++++++++
|
||||||
|
2 files changed, 11 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lparser.c b/lparser.c
|
||||||
|
index 3abe3d751..a5cd55257 100644
|
||||||
|
--- a/src/lparser.c
|
||||||
|
+++ b/src/lparser.c
|
||||||
|
@@ -468,6 +468,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] */
|
||||||
|
}
|
|
@ -0,0 +1,192 @@
|
||||||
|
diff -up lua-5.4.0-beta/configure.ac.autoxxx lua-5.4.0-beta/configure.ac
|
||||||
|
--- lua-5.4.0-beta/configure.ac.autoxxx 2019-10-23 15:03:13.296916443 -0400
|
||||||
|
+++ lua-5.4.0-beta/configure.ac 2019-10-23 15:03:13.296916443 -0400
|
||||||
|
@@ -0,0 +1,69 @@
|
||||||
|
+AC_PREREQ(2.59)
|
||||||
|
+AC_INIT([lua], [5.4.0], [https://bugzilla.redhat.com/], [lua-at], [http://www.lua.org])
|
||||||
|
+AC_SUBST([MAJOR_VERSION], [5.4])
|
||||||
|
+
|
||||||
|
+AC_CONFIG_HEADERS([config.h])
|
||||||
|
+AC_CONFIG_SRCDIR([src/lapi.c])
|
||||||
|
+
|
||||||
|
+AM_INIT_AUTOMAKE([1.9 foreign])
|
||||||
|
+
|
||||||
|
+AC_PROG_CC
|
||||||
|
+AC_PROG_LIBTOOL
|
||||||
|
+
|
||||||
|
+AC_ARG_WITH(
|
||||||
|
+ [readline],
|
||||||
|
+ [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
|
||||||
|
+ [use_readline=$withval],
|
||||||
|
+ [use_readline=yes]
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+LUA_LIBS="-lm"
|
||||||
|
+
|
||||||
|
+# Check for readline
|
||||||
|
+READLINE_DEFS="#undef LUA_USE_READLINE"
|
||||||
|
+if test "x$use_readline" == "xyes"; then
|
||||||
|
+ AC_CHECK_LIB([readline], [readline], [:], [use_readline=no], [-lncurses])
|
||||||
|
+ AC_CHECK_HEADERS([readline/readline.h readline/history.h], [], [use_readline=no])
|
||||||
|
+ if test "x$use_readline" == "xno"; then
|
||||||
|
+ AC_MSG_WARN([readline headers could not be found, disabling readline support])
|
||||||
|
+ else
|
||||||
|
+ READLINE_DEFS="#define LUA_USE_READLINE"
|
||||||
|
+ READLINE_LIBS="-lreadline -lncurses"
|
||||||
|
+ fi
|
||||||
|
+fi
|
||||||
|
+AC_SUBST(READLINE_DEFS)
|
||||||
|
+AC_SUBST(READLINE_LIBS)
|
||||||
|
+
|
||||||
|
+case "$host" in
|
||||||
|
+ *-mingw*) use_os=win32 ;;
|
||||||
|
+ *-darwin*) use_os=macosx ;;
|
||||||
|
+ *) use_os=posix ;;
|
||||||
|
+esac
|
||||||
|
+
|
||||||
|
+POSIX_DEFS="#undef LUA_USE_POSIX"
|
||||||
|
+LUA_DL_DEFS="#undef LUA_USE_DLOPEN"
|
||||||
|
+LUA_BUILD_AS_DLL_DEFS="#undef LUA_BUILD_AS_DLL"
|
||||||
|
+
|
||||||
|
+if test "x$use_os" == "xwin32"; then
|
||||||
|
+ LUA_BUILD_AS_DLL_DEFS="#define LUA_BUILD_AS_DLL"
|
||||||
|
+elif test "x$use_os" == "xmacosx"; then
|
||||||
|
+ POSIX_DEFS="#define LUA_USE_POSIX"
|
||||||
|
+ LUA_DL_DEFS="#define LUA_DL_DYLD"
|
||||||
|
+elif test "x$use_os" == "xposix"; then
|
||||||
|
+ POSIX_DEFS="#define LUA_USE_POSIX"
|
||||||
|
+ LUA_DL_DEFS="#define LUA_DL_DLOPEN"
|
||||||
|
+ LUA_LIBS="$LUA_LIBS -ldl"
|
||||||
|
+fi
|
||||||
|
+AC_SUBST(POSIX_DEFS)
|
||||||
|
+AC_SUBST(LUA_DL_DEFS)
|
||||||
|
+AC_SUBST(LUA_BUILD_AS_DLL_DEFS)
|
||||||
|
+
|
||||||
|
+AC_SUBST(LUA_LIBS)
|
||||||
|
+
|
||||||
|
+AC_CONFIG_FILES([Makefile
|
||||||
|
+ src/Makefile
|
||||||
|
+ src/lua.pc
|
||||||
|
+ src/luaconf.h.template
|
||||||
|
+ doc/Makefile
|
||||||
|
+])
|
||||||
|
+AC_OUTPUT
|
||||||
|
diff -up lua-5.4.0-beta/doc/Makefile.am.autoxxx lua-5.4.0-beta/doc/Makefile.am
|
||||||
|
--- lua-5.4.0-beta/doc/Makefile.am.autoxxx 2019-10-23 15:03:13.296916443 -0400
|
||||||
|
+++ lua-5.4.0-beta/doc/Makefile.am 2019-10-23 15:03:13.296916443 -0400
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+man1_MANS = lua.1 luac.1
|
||||||
|
+
|
||||||
|
+EXTRA_DIST = \
|
||||||
|
+ contents.html logo.gif lua.1 luac.1 lua.css manual.css manual.html osi-certified-72x60.png readme.html
|
||||||
|
diff -up lua-5.4.0-beta/Makefile.am.autoxxx lua-5.4.0-beta/Makefile.am
|
||||||
|
--- lua-5.4.0-beta/Makefile.am.autoxxx 2019-10-23 15:03:13.296916443 -0400
|
||||||
|
+++ lua-5.4.0-beta/Makefile.am 2019-10-23 15:03:13.296916443 -0400
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+SUBDIRS = src doc
|
||||||
|
+
|
||||||
|
+EXTRA_DIST = README
|
||||||
|
diff -up lua-5.4.0-beta/src/.gitignore.autoxxx lua-5.4.0-beta/src/.gitignore
|
||||||
|
--- lua-5.4.0-beta/src/.gitignore.autoxxx 2019-10-23 15:03:13.297916423 -0400
|
||||||
|
+++ lua-5.4.0-beta/src/.gitignore 2019-10-23 15:03:13.296916443 -0400
|
||||||
|
@@ -0,0 +1,5 @@
|
||||||
|
+lua
|
||||||
|
+lua.pc
|
||||||
|
+luac
|
||||||
|
+luaconf.h
|
||||||
|
+luaconf.h.template
|
||||||
|
diff -up lua-5.4.0-beta/src/luaconf.h.template.in.autoxxx lua-5.4.0-beta/src/luaconf.h.template.in
|
||||||
|
--- lua-5.4.0-beta/src/luaconf.h.template.in.autoxxx 2019-09-30 19:52:16.000000000 -0400
|
||||||
|
+++ lua-5.4.0-beta/src/luaconf.h.template.in 2019-10-23 15:05:45.139817627 -0400
|
||||||
|
@@ -11,6 +11,11 @@
|
||||||
|
#include <limits.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
+@POSIX_DEFS@
|
||||||
|
+@LUA_DL_DEFS@
|
||||||
|
+@LUA_BUILD_AS_DLL_DEFS@
|
||||||
|
+@READLINE_DEFS@
|
||||||
|
+
|
||||||
|
|
||||||
|
/*
|
||||||
|
** ===================================================================
|
||||||
|
@@ -227,9 +232,9 @@
|
||||||
|
|
||||||
|
#else /* }{ */
|
||||||
|
|
||||||
|
-#define LUA_ROOT "/usr/local/"
|
||||||
|
-#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
|
||||||
|
-#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
|
||||||
|
+#define LUA_ROOT "@prefix@/"
|
||||||
|
+#define LUA_LDIR "@pkgdatadir@/lua/" LUA_VDIR "/"
|
||||||
|
+#define LUA_CDIR "@libdir@/lua/" LUA_VDIR "/"
|
||||||
|
|
||||||
|
#if !defined(LUA_PATH_DEFAULT)
|
||||||
|
#define LUA_PATH_DEFAULT \
|
||||||
|
diff -up lua-5.4.0-beta/src/lua.pc.in.autoxxx lua-5.4.0-beta/src/lua.pc.in
|
||||||
|
--- lua-5.4.0-beta/src/lua.pc.in.autoxxx 2019-10-23 15:03:13.297916423 -0400
|
||||||
|
+++ lua-5.4.0-beta/src/lua.pc.in 2019-10-23 15:03:13.297916423 -0400
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+V= @MAJOR_VERSION@
|
||||||
|
+R= @VERSION@
|
||||||
|
+prefix= @prefix@
|
||||||
|
+exec_prefix=${prefix}
|
||||||
|
+libdir= @libdir@
|
||||||
|
+includedir=${prefix}/include
|
||||||
|
+
|
||||||
|
+Name: Lua
|
||||||
|
+Description: An Extensible Extension Language
|
||||||
|
+Version: ${R}
|
||||||
|
+Requires:
|
||||||
|
+Libs: -llua @LUA_LIBS@
|
||||||
|
+Cflags: -I${includedir}
|
||||||
|
diff -up lua-5.4.0-beta/src/Makefile.am.autoxxx lua-5.4.0-beta/src/Makefile.am
|
||||||
|
--- lua-5.4.0-beta/src/Makefile.am.autoxxx 2019-10-23 15:03:13.297916423 -0400
|
||||||
|
+++ lua-5.4.0-beta/src/Makefile.am 2019-10-23 15:03:13.297916423 -0400
|
||||||
|
@@ -0,0 +1,46 @@
|
||||||
|
+AM_CFLAGS = -Wall
|
||||||
|
+
|
||||||
|
+include_HEADERS = lua.h lualib.h lauxlib.h lua.hpp
|
||||||
|
+
|
||||||
|
+nodist_include_HEADERS = luaconf.h
|
||||||
|
+
|
||||||
|
+lib_LTLIBRARIES = liblua.la
|
||||||
|
+liblua_la_LDFLAGS = -release @MAJOR_VERSION@
|
||||||
|
+liblua_la_SOURCES = \
|
||||||
|
+ lapi.c lauxlib.c lbaselib.c lcode.c lcorolib.c lctype.c ldblib.c \
|
||||||
|
+ ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c \
|
||||||
|
+ loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c \
|
||||||
|
+ ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c \
|
||||||
|
+ lapi.h lcode.h lctype.h ldebug.h ldo.h lfunc.h lgc.h llex.h llimits.h \
|
||||||
|
+ lmem.h lobject.h lopcodes.h lparser.h lstate.h lstring.h ltable.h ltm.h \
|
||||||
|
+ lundump.h lvm.h lzio.h
|
||||||
|
+
|
||||||
|
+pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
+pkgconfig_DATA = lua.pc
|
||||||
|
+
|
||||||
|
+bin_PROGRAMS = lua luac
|
||||||
|
+
|
||||||
|
+lua_SOURCES = lua.c
|
||||||
|
+lua_LDADD = liblua.la @LUA_LIBS@ @READLINE_LIBS@
|
||||||
|
+lua_DEPENDENCIES = liblua.la
|
||||||
|
+
|
||||||
|
+luac_SOURCES = luac.c
|
||||||
|
+# Statically link liblua against luac since luac uses symbols not exported in liblua
|
||||||
|
+luac_LDADD = .libs/liblua.a @LUA_LIBS@
|
||||||
|
+luac_DEPENDENCIES = liblua.la
|
||||||
|
+
|
||||||
|
+EXTRA_DIST = luaconf.h.template
|
||||||
|
+BUILT_SOURCES = luaconf.h
|
||||||
|
+CLEANFILES = luaconf.h luaconf.h.template
|
||||||
|
+
|
||||||
|
+readline_defs = @READLINE_DEFS@
|
||||||
|
+
|
||||||
|
+edit = sed \
|
||||||
|
+ -e 's,%prefix%,$(prefix),g' \
|
||||||
|
+ -e 's,%lua_datadir%,$(datadir),g' \
|
||||||
|
+ -e 's,%lua_libdir%,$(libdir),g'
|
||||||
|
+
|
||||||
|
+luaconf.h : luaconf.h.template
|
||||||
|
+ rm -f $@ $@.tmp
|
||||||
|
+ $(edit) $< >$@.tmp
|
||||||
|
+ mv $@.tmp $@
|
|
@ -0,0 +1,51 @@
|
||||||
|
diff -up lua-5.4.2/src/ldebug.c.orig lua-5.4.2/src/ldebug.c
|
||||||
|
--- lua-5.4.2/src/ldebug.c.orig 2020-11-13 16:32:00.000000000 +0100
|
||||||
|
+++ lua-5.4.2/src/ldebug.c 2022-10-21 14:35:02.200941813 +0200
|
||||||
|
@@ -772,8 +772,11 @@ l_noret luaG_runerror (lua_State *L, con
|
||||||
|
va_start(argp, fmt);
|
||||||
|
msg = luaO_pushvfstring(L, fmt, argp); /* format message */
|
||||||
|
va_end(argp);
|
||||||
|
- if (isLua(ci)) /* if Lua function, add source:line information */
|
||||||
|
+ if (isLua(ci)) { /* if Lua function, add source:line information */
|
||||||
|
luaG_addinfo(L, msg, ci_func(ci)->p->source, getcurrentline(ci));
|
||||||
|
+ setobjs2s(L, L->top - 2, L->top - 1); /* remove 'msg' from the stack */
|
||||||
|
+ L->top--;
|
||||||
|
+ }
|
||||||
|
luaG_errormsg(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -up lua-5.4.2/src/lvm.c.orig lua-5.4.2/src/lvm.c
|
||||||
|
--- lua-5.4.2/src/lvm.c.orig 2020-11-13 16:32:02.000000000 +0100
|
||||||
|
+++ lua-5.4.2/src/lvm.c 2022-10-21 14:35:31.713755890 +0200
|
||||||
|
@@ -641,7 +641,7 @@ void luaV_concat (lua_State *L, int tota
|
||||||
|
int n = 2; /* number of elements handled in this pass (at least 2) */
|
||||||
|
if (!(ttisstring(s2v(top - 2)) || cvt2str(s2v(top - 2))) ||
|
||||||
|
!tostring(L, s2v(top - 1)))
|
||||||
|
- luaT_tryconcatTM(L);
|
||||||
|
+ luaT_tryconcatTM(L); /* may invalidate 'top' */
|
||||||
|
else if (isemptystr(s2v(top - 1))) /* second operand is empty? */
|
||||||
|
cast_void(tostring(L, s2v(top - 2))); /* result is first operand */
|
||||||
|
else if (isemptystr(s2v(top - 2))) { /* first operand is empty string? */
|
||||||
|
@@ -654,8 +654,10 @@ void luaV_concat (lua_State *L, int tota
|
||||||
|
/* collect total length and number of strings */
|
||||||
|
for (n = 1; n < total && tostring(L, s2v(top - n - 1)); n++) {
|
||||||
|
size_t l = vslen(s2v(top - n - 1));
|
||||||
|
- if (l_unlikely(l >= (MAX_SIZE/sizeof(char)) - tl))
|
||||||
|
+ if (l_unlikely(l >= (MAX_SIZE/sizeof(char)) - tl)) {
|
||||||
|
+ L->top = top - total; /* pop strings to avoid wasting stack */
|
||||||
|
luaG_runerror(L, "string length overflow");
|
||||||
|
+ }
|
||||||
|
tl += l;
|
||||||
|
}
|
||||||
|
if (tl <= LUAI_MAXSHORTLEN) { /* is result a short string? */
|
||||||
|
@@ -669,8 +671,8 @@ void luaV_concat (lua_State *L, int tota
|
||||||
|
}
|
||||||
|
setsvalue2s(L, top - n, ts); /* create result */
|
||||||
|
}
|
||||||
|
- total -= n-1; /* got 'n' strings to create 1 new */
|
||||||
|
- L->top -= n-1; /* popped 'n' strings and pushed one */
|
||||||
|
+ total -= n - 1; /* got 'n' strings to create one new */
|
||||||
|
+ L->top -= n - 1; /* popped 'n' strings and pushed one */
|
||||||
|
} while (total > 1); /* repeat until only 1 result left */
|
||||||
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
%global major_version 5.3
|
%global major_version 5.4
|
||||||
|
# Normally, this is the same as version, but... not always.
|
||||||
|
%global test_version 5.4.4
|
||||||
# If you are incrementing major_version, enable bootstrapping and adjust accordingly.
|
# 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
|
# Version should be the latest prior build. If you don't do this, RPM will break and
|
||||||
# everything will grind to a halt.
|
# everything will grind to a halt.
|
||||||
%global bootstrap 0
|
%global bootstrap 0
|
||||||
%global bootstrap_major_version 5.2
|
%global bootstrap_major_version 5.3
|
||||||
%global bootstrap_version %{bootstrap_major_version}.3
|
%global bootstrap_version %{bootstrap_major_version}.5
|
||||||
|
|
||||||
# Place rpm-macros into proper location.
|
# Place rpm-macros into proper location.
|
||||||
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
||||||
|
@ -12,9 +14,8 @@
|
||||||
|
|
||||||
Name: lua
|
Name: lua
|
||||||
Version: %{major_version}.4
|
Version: %{major_version}.4
|
||||||
Release: 12%{?dist}
|
Release: 4%{?dist}
|
||||||
Summary: Powerful light-weight programming language
|
Summary: Powerful light-weight programming language
|
||||||
Group: Development/Languages
|
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: http://www.lua.org/
|
URL: http://www.lua.org/
|
||||||
Source0: http://www.lua.org/ftp/lua-%{version}.tar.gz
|
Source0: http://www.lua.org/ftp/lua-%{version}.tar.gz
|
||||||
|
@ -23,31 +24,25 @@ Source1: mit.txt
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Source2: http://www.lua.org/ftp/lua-%{bootstrap_version}.tar.gz
|
Source2: http://www.lua.org/ftp/lua-%{bootstrap_version}.tar.gz
|
||||||
%endif
|
%endif
|
||||||
Source3: http://www.lua.org/tests/lua-%{version}-tests.tar.gz
|
Source3: http://www.lua.org/tests/lua-%{test_version}-tests.tar.gz
|
||||||
# multilib
|
# multilib
|
||||||
Source4: luaconf.h
|
Source4: luaconf.h
|
||||||
# rpm-macro
|
Patch0: %{name}-5.4.0-beta-autotoolize.patch
|
||||||
Source1000: macros.lua
|
|
||||||
Patch0: %{name}-5.3.0-autotoolize.patch
|
|
||||||
Patch1: %{name}-5.3.0-idsize.patch
|
Patch1: %{name}-5.3.0-idsize.patch
|
||||||
#Patch2: %%{name}-5.3.0-luac-shared-link-fix.patch
|
#Patch2: %%{name}-5.3.0-luac-shared-link-fix.patch
|
||||||
Patch3: %{name}-5.2.2-configure-linux.patch
|
Patch3: %{name}-5.2.2-configure-linux.patch
|
||||||
Patch4: %{name}-5.3.0-configure-compat-module.patch
|
Patch4: %{name}-5.3.0-configure-compat-module.patch
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
Patch5: %{name}-5.2.3-autotoolize.patch
|
Patch5: %{name}-5.3.0-autotoolize.patch
|
||||||
Patch6: %{name}-5.2.2-idsize.patch
|
Patch6: %{name}-5.3.5-luac-shared-link-fix.patch
|
||||||
Patch7: %{name}-5.2.2-luac-shared-link-fix.patch
|
|
||||||
Patch8: %{name}-5.2.2-configure-compat-module.patch
|
|
||||||
%endif
|
%endif
|
||||||
# https://www.lua.org/bugs.html
|
# https://www.lua.org/bugs.html
|
||||||
Patch9: lua-5.3.4-bug1.patch
|
Patch18: %{name}-5.3.5-CVE-2020-24370.patch
|
||||||
Patch10: lua-5.3.4-bug4.patch
|
Patch19: %{name}-5.4.2-CVE-2022-33099.patch
|
||||||
Patch11: lua-5.3.4-bug5.patch
|
Patch20: %{name}-5.4-CVE-2022-28805.patch
|
||||||
Patch12: lua-5.3.4-bug6.patch
|
|
||||||
Patch13: lua-5-3.4-upvaluejoin.patch
|
|
||||||
Patch14: lua-5.4.1-bug11.patch
|
|
||||||
|
|
||||||
BuildRequires: automake autoconf libtool readline-devel ncurses-devel
|
BuildRequires: automake autoconf libtool readline-devel ncurses-devel
|
||||||
|
BuildRequires: make
|
||||||
Requires: lua-libs = %{version}-%{release}
|
Requires: lua-libs = %{version}-%{release}
|
||||||
|
|
||||||
%description
|
%description
|
||||||
|
@ -62,8 +57,10 @@ configuration, scripting, and rapid prototyping.
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Development files for %{name}
|
Summary: Development files for %{name}
|
||||||
Group: System Environment/Libraries
|
|
||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
|
# The RPM related dependencies bring nothing to a non-RPM Lua developer
|
||||||
|
# But we want them when packages BuildRequire lua-devel
|
||||||
|
Requires: (lua-rpm-macros if rpm-build)
|
||||||
Requires: pkgconfig
|
Requires: pkgconfig
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
|
@ -78,7 +75,6 @@ This package contains the shared libraries for %{name}.
|
||||||
|
|
||||||
%package static
|
%package static
|
||||||
Summary: Static library for %{name}
|
Summary: Static library for %{name}
|
||||||
Group: System Environment/Libraries
|
|
||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
|
|
||||||
%description static
|
%description static
|
||||||
|
@ -87,7 +83,7 @@ This package contains the static version of liblua for %{name}.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
%setup -q -a 2 -a 3
|
%setup -q -a 2 -a 3 -n %{name}-%{version}
|
||||||
%else
|
%else
|
||||||
%setup -q -a 3
|
%setup -q -a 3
|
||||||
%endif
|
%endif
|
||||||
|
@ -98,12 +94,8 @@ mv src/luaconf.h src/luaconf.h.template.in
|
||||||
#%% patch2 -p1 -z .luac-shared
|
#%% patch2 -p1 -z .luac-shared
|
||||||
%patch3 -p1 -z .configure-linux
|
%patch3 -p1 -z .configure-linux
|
||||||
%patch4 -p1 -z .configure-compat-all
|
%patch4 -p1 -z .configure-compat-all
|
||||||
%patch9 -p1 -b .bug1
|
%patch19 -p1 -b .CVE-2022-33099
|
||||||
%patch10 -p1 -b .bug4
|
%patch20 -p1 -b .CVE-2022-28805
|
||||||
%patch11 -p1 -b .bug5
|
|
||||||
%patch12 -p1 -b .bug6
|
|
||||||
%patch13 -p1 -b .upvaluejoin
|
|
||||||
%patch14 -p1 -b .bug11
|
|
||||||
# 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
|
||||||
autoreconf -ifv
|
autoreconf -ifv
|
||||||
|
@ -112,10 +104,11 @@ autoreconf -ifv
|
||||||
cd lua-%{bootstrap_version}/
|
cd lua-%{bootstrap_version}/
|
||||||
mv src/luaconf.h src/luaconf.h.template.in
|
mv src/luaconf.h src/luaconf.h.template.in
|
||||||
%patch5 -p1 -b .autoxxx
|
%patch5 -p1 -b .autoxxx
|
||||||
%patch6 -p1 -b .idsize
|
%patch1 -p1 -b .idsize
|
||||||
%patch7 -p1 -b .luac-shared
|
|
||||||
%patch3 -p1 -z .configure-linux
|
%patch3 -p1 -z .configure-linux
|
||||||
%patch8 -p1 -z .configure-compat-all
|
%patch4 -p1 -z .configure-compat-all
|
||||||
|
%patch6 -p1 -b .luac-shared-link-fix
|
||||||
|
%patch18 -p1 -b .CVE-2020-24370
|
||||||
autoreconf -i
|
autoreconf -i
|
||||||
cd ..
|
cd ..
|
||||||
%endif
|
%endif
|
||||||
|
@ -148,7 +141,7 @@ popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%check
|
%check
|
||||||
cd ./lua-%{version}-tests/
|
cd ./lua-%{test_version}-tests/
|
||||||
|
|
||||||
# Dont skip the fully portable or ram-hungry tests:
|
# Dont skip the fully portable or ram-hungry tests:
|
||||||
# sed -i.orig -e '
|
# sed -i.orig -e '
|
||||||
|
@ -188,9 +181,6 @@ rm -rf $RPM_BUILD_ROOT/installdir
|
||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# Install rpm-macro
|
|
||||||
install -Dpm 0644 %{SOURCE1000} $RPM_BUILD_ROOT/%{macrosdir}/macros.lua
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%{!?_licensedir:%global license %%doc}
|
%{!?_licensedir:%global license %%doc}
|
||||||
%license mit.txt
|
%license mit.txt
|
||||||
|
@ -198,20 +188,19 @@ install -Dpm 0644 %{SOURCE1000} $RPM_BUILD_ROOT/%{macrosdir}/macros.lua
|
||||||
%doc README doc/*.html doc/*.css doc/*.gif doc/*.png
|
%doc README doc/*.html doc/*.css doc/*.gif doc/*.png
|
||||||
%{_bindir}/lua
|
%{_bindir}/lua
|
||||||
%{_bindir}/luac
|
%{_bindir}/luac
|
||||||
%if 0%{?bootstrap}
|
|
||||||
%dir %{_libdir}/lua/%{bootstrap_major_version}
|
|
||||||
%dir %{_datadir}/lua/%{bootstrap_major_version}
|
|
||||||
%endif
|
|
||||||
%{_mandir}/man1/lua*.1*
|
%{_mandir}/man1/lua*.1*
|
||||||
|
|
||||||
|
%files libs
|
||||||
%dir %{_libdir}/lua
|
%dir %{_libdir}/lua
|
||||||
%dir %{_libdir}/lua/%{major_version}
|
%dir %{_libdir}/lua/%{major_version}
|
||||||
|
%{_libdir}/liblua-%{major_version}.so
|
||||||
%dir %{_datadir}/lua
|
%dir %{_datadir}/lua
|
||||||
%dir %{_datadir}/lua/%{major_version}
|
%dir %{_datadir}/lua/%{major_version}
|
||||||
|
|
||||||
%files libs
|
|
||||||
%{_libdir}/liblua-%{major_version}.so
|
|
||||||
%if 0%{?bootstrap}
|
%if 0%{?bootstrap}
|
||||||
|
%dir %{_libdir}/lua/%{bootstrap_major_version}
|
||||||
%{_libdir}/liblua-%{bootstrap_major_version}.so
|
%{_libdir}/liblua-%{bootstrap_major_version}.so
|
||||||
|
%dir %{_datadir}/lua/%{bootstrap_major_version}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
|
@ -219,18 +208,95 @@ install -Dpm 0644 %{SOURCE1000} $RPM_BUILD_ROOT/%{macrosdir}/macros.lua
|
||||||
%{_includedir}/l*.hpp
|
%{_includedir}/l*.hpp
|
||||||
%{_libdir}/liblua.so
|
%{_libdir}/liblua.so
|
||||||
%{_libdir}/pkgconfig/*.pc
|
%{_libdir}/pkgconfig/*.pc
|
||||||
%{macrosdir}/macros.lua
|
|
||||||
|
|
||||||
%files static
|
%files static
|
||||||
%{_libdir}/*.a
|
%{_libdir}/*.a
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Aug 02 2019 Florian Festi <ffesti@redhat.com> - 5.3.4-12
|
* Mon Apr 17 2023 Florian Festi <ffesti@redhat.com> - 5.4.4-4
|
||||||
- Fix segfault in getlocal and setlocal (#1880445)
|
- Disable bootstrap mode forgotten on 5.4 rebase (#2135419)
|
||||||
|
|
||||||
* Mon Jun 03 2019 Florian Festi <ffesti@redhat.com> - 5.3.4-11
|
* Fri Feb 03 2023 Florian Festi <ffesti@redhat.com> - 5.4.4-3
|
||||||
- Fix use after free in lua_upvaluejoin (#1670167)
|
- Apply upstream patch for CVE-2022-28805
|
||||||
|
|
||||||
|
* Fri Feb 03 2023 Florian Festi <ffesti@redhat.com> - 5.4.4-2
|
||||||
|
- Resolves CVE-2021-43519
|
||||||
|
|
||||||
|
* Tue Jan 24 2023 Florian Festi <ffesti@redhat.com> - 5.4.4-1
|
||||||
|
- Rebase to lua 5.4.4
|
||||||
|
- Resolves CVE-2021-44964
|
||||||
|
|
||||||
|
* Tue Oct 25 2022 Michal Domonkos <mdomonko@redhat.com> - 5.4.2-7
|
||||||
|
- Fix up CVE-2022-33099 patch
|
||||||
|
|
||||||
|
* Mon Oct 17 2022 Michal Domonkos <mdomonko@redhat.com> - 5.4.2-6
|
||||||
|
- Enable gating
|
||||||
|
|
||||||
|
* Mon Oct 17 2022 Michal Domonkos <mdomonko@redhat.com> - 5.4.2-5
|
||||||
|
- apply upstream fix for CVE-2022-33099
|
||||||
|
|
||||||
|
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 5.4.2-4
|
||||||
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
|
Related: rhbz#1991688
|
||||||
|
|
||||||
|
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 5.4.2-3
|
||||||
|
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||||
|
|
||||||
|
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.4.2-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Dec 3 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.2-1
|
||||||
|
- update to 5.4.2
|
||||||
|
|
||||||
|
* Mon Oct 12 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.1-1
|
||||||
|
- update to 5.4.1
|
||||||
|
|
||||||
|
* Wed Sep 2 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-8
|
||||||
|
- apply upstream fix for CVE-2020-24342
|
||||||
|
|
||||||
|
* Mon Aug 31 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 5.4.0-7
|
||||||
|
- Refactor macros into lua-rpm-macros
|
||||||
|
|
||||||
|
* Wed Aug 19 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-6
|
||||||
|
- apply upstream fix for CVE-2020-24370, CVE-2020-24371
|
||||||
|
|
||||||
|
* Wed Aug 19 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-5
|
||||||
|
- apply upstream fix for CVE-2020-24369
|
||||||
|
|
||||||
|
* Fri Jul 31 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-4
|
||||||
|
- apply upstream fix for CVE-2020-15889
|
||||||
|
- apply upstream fix for CVE-2020-15945
|
||||||
|
- apply upstream fixes for "known bugs"
|
||||||
|
|
||||||
|
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.4.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 30 2020 Miro Hrončok <mhroncok@redhat.com> - 5.4.0-2
|
||||||
|
- Add lua(abi) requirements generator (requires RPM 4.16+)
|
||||||
|
|
||||||
|
* Mon Jun 29 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-1
|
||||||
|
- update to 5.4.0
|
||||||
|
|
||||||
|
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-7
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 5.3.5-5
|
||||||
|
- Rebuild for readline 8.0
|
||||||
|
|
||||||
|
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jan 28 2019 Tom Callaway <spot@fedoraproject.org> - 5.3.5-3
|
||||||
|
- apply fix for CVE-2019-6706 (bz1670020)
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 10 2018 Tom Callaway <spot@fedoraproject.org> - 5.3.5-1
|
||||||
|
- update to 5.3.5
|
||||||
|
|
||||||
* Tue Feb 13 2018 Tom Callaway <spot@fedoraproject.org> - 5.3.4-10
|
* Tue Feb 13 2018 Tom Callaway <spot@fedoraproject.org> - 5.3.4-10
|
||||||
- move lua(abi) provide to -libs
|
- move lua(abi) provide to -libs
|
|
@ -0,0 +1,3 @@
|
||||||
|
SHA512 (lua-5.3.5.tar.gz) = 4f9516acc4659dfd0a9e911bfa00c0788f0ad9348e5724fe8fb17aac59e9c0060a64378f82be86f8534e49c6c013e7488ad17321bafcc787831d3d67406bd0f4
|
||||||
|
SHA512 (lua-5.4.4.tar.gz) = af0c35d5ba00fecbb2dd617bd7b825edf7418a16a73076e04f2a0df58cdbf098dc3ff4402e974afd789eb5d86d2e12ec6df9c84b99b23656ea694a85f83bcd21
|
||||||
|
SHA512 (lua-5.4.4-tests.tar.gz) = 08b3d764b3f362a2cddf5a23e71b16eea96a234a970fa0048bab358ebbd77f99d9bd132af12254383c5bb5426516e1ce2107e529e88d3963869255f5a41198ef
|
|
@ -0,0 +1,3 @@
|
||||||
|
# lua
|
||||||
|
|
||||||
|
lua tests
|
|
@ -0,0 +1,63 @@
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Makefile of /CoreOS/lua/Sanity/Smoke
|
||||||
|
# Description: Basic smoke for lua component
|
||||||
|
# Author: Stepan Sigut <ssigut@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2016 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 2 of
|
||||||
|
# the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be
|
||||||
|
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE. See the GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see http://www.gnu.org/licenses/.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/lua/Sanity/Smoke
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE *.lua
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Stepan Sigut <ssigut@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Basic smoke for lua component" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 5m" >> $(METADATA)
|
||||||
|
@echo "RunFor: lua" >> $(METADATA)
|
||||||
|
@echo "Requires: lua" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2+" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
@echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
|
@ -0,0 +1,3 @@
|
||||||
|
PURPOSE of /CoreOS/lua/Sanity/Smoke
|
||||||
|
Description: Basic smoke for lua component
|
||||||
|
Author: Stepan Sigut <ssigut@redhat.com>
|
|
@ -0,0 +1,35 @@
|
||||||
|
-- account.lua
|
||||||
|
-- from PiL 1, Chapter 16
|
||||||
|
|
||||||
|
Account = {balance = 0}
|
||||||
|
|
||||||
|
function Account:new (o, name)
|
||||||
|
o = o or {name=name}
|
||||||
|
setmetatable(o, self)
|
||||||
|
self.__index = self
|
||||||
|
return o
|
||||||
|
end
|
||||||
|
|
||||||
|
function Account:deposit (v)
|
||||||
|
self.balance = self.balance + v
|
||||||
|
end
|
||||||
|
|
||||||
|
function Account:withdraw (v)
|
||||||
|
if v > self.balance then error("insufficient funds on account "..self.name) end
|
||||||
|
self.balance = self.balance - v
|
||||||
|
end
|
||||||
|
|
||||||
|
function Account:show (title)
|
||||||
|
print(title or "", self.name, self.balance)
|
||||||
|
end
|
||||||
|
|
||||||
|
a = Account:new(nil,"demo")
|
||||||
|
a:show("after creation")
|
||||||
|
a:deposit(1000.00)
|
||||||
|
a:show("after deposit")
|
||||||
|
a:withdraw(100.00)
|
||||||
|
a:show("after withdraw")
|
||||||
|
|
||||||
|
-- this would raise an error
|
||||||
|
b = Account:new(nil,"DEMO")
|
||||||
|
b:withdraw(100.00)
|
|
@ -0,0 +1,28 @@
|
||||||
|
-- bisect.lua
|
||||||
|
-- bisection method for solving non-linear equations
|
||||||
|
|
||||||
|
delta=1e-6 -- tolerance
|
||||||
|
|
||||||
|
function bisect(f,a,b,fa,fb)
|
||||||
|
local c=(a+b)/2
|
||||||
|
io.write(n," c=",c," a=",a," b=",b,"\n")
|
||||||
|
if c==a or c==b or math.abs(a-b)<delta then return c,b-a end
|
||||||
|
n=n+1
|
||||||
|
local fc=f(c)
|
||||||
|
if fa*fc<0 then return bisect(f,a,c,fa,fc) else return bisect(f,c,b,fc,fb) end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- find root of f in the inverval [a,b]. needs f(a)*f(b)<0
|
||||||
|
function solve(f,a,b)
|
||||||
|
n=0
|
||||||
|
local z,e=bisect(f,a,b,f(a),f(b))
|
||||||
|
io.write(string.format("after %d steps, root is %.17g with error %.1e, f=%.1e\n",n,z,e,f(z)))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- our function
|
||||||
|
function f(x)
|
||||||
|
return x*x*x-x-1
|
||||||
|
end
|
||||||
|
|
||||||
|
-- find zero in [1,2]
|
||||||
|
solve(f,1,2)
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- globals.lua
|
||||||
|
-- show all global variables
|
||||||
|
|
||||||
|
local seen={}
|
||||||
|
|
||||||
|
function dump(t,i)
|
||||||
|
seen[t]=true
|
||||||
|
local s={}
|
||||||
|
local n=0
|
||||||
|
for k in pairs(t) do
|
||||||
|
n=n+1 s[n]=k
|
||||||
|
end
|
||||||
|
table.sort(s)
|
||||||
|
for k,v in ipairs(s) do
|
||||||
|
print(i,v)
|
||||||
|
v=t[v]
|
||||||
|
if type(v)=="table" and not seen[v] then
|
||||||
|
dump(v,i.."\t")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
dump(_G,"")
|
|
@ -0,0 +1,4 @@
|
||||||
|
-- hello.lua
|
||||||
|
-- the first program in every language
|
||||||
|
|
||||||
|
io.write("Hello world, from ",_VERSION,"!\n")
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# runtest.sh of /CoreOS/lua/Sanity/Smoke
|
||||||
|
# Description: Basic smoke for lua component
|
||||||
|
# Author: Stepan Sigut <ssigut@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2016 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 2 of
|
||||||
|
# the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be
|
||||||
|
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE. See the GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see http://www.gnu.org/licenses/.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/bin/rhts-environment.sh || exit 1
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGES=${PACKAGES:-"lua"}
|
||||||
|
LUA=${LUA:-"lua"}
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm --all
|
||||||
|
rlAssertBinaryOrigin $LUA
|
||||||
|
set -o pipefail
|
||||||
|
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
||||||
|
rlRun "cp *.lua $TmpDir"
|
||||||
|
rlRun "pushd $TmpDir"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlRun "$LUA hello.lua 2>&1 | tee dump.log" 0
|
||||||
|
rlAssertGrep "Hello world, from Lua" "dump.log"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlRun "$LUA bisect.lua 2>&1 | tee dump.log" 0
|
||||||
|
rlAssertGrep "after 20 steps, root is 1.3247179985046387 with error 9.5e-07, f=1.8e-07" "dump.log"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlRun "$LUA globals.lua &>/dev/null" 0
|
||||||
|
rlPhaseEnd
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlRun "$LUA account.lua 2>&1 | tee dump.log" 1
|
||||||
|
rlAssertGrep "after creation" "dump.log"
|
||||||
|
rlAssertGrep "lua: account.lua:18: insufficient funds on account DEMO" "dump.log"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlRun "$LUA sieve.lua &>/dev/null" 0
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "popd"
|
||||||
|
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
|
@ -0,0 +1,28 @@
|
||||||
|
-- sieve.lua
|
||||||
|
-- the sieve of Eratosthenes programmed with coroutines
|
||||||
|
-- typical usage: lua -e N=500 sieve.lua | column
|
||||||
|
|
||||||
|
-- generate all the numbers from 2 to n
|
||||||
|
function gen (n)
|
||||||
|
return coroutine.wrap(function ()
|
||||||
|
for i=2,n do coroutine.yield(i) end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- filter the numbers generated by `g', removing multiples of `p'
|
||||||
|
function filter (p, g)
|
||||||
|
return coroutine.wrap(function ()
|
||||||
|
for n in g do
|
||||||
|
if n%p ~= 0 then coroutine.yield(n) end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
N=N or 500 -- from command line
|
||||||
|
x = gen(N) -- generate primes up to N
|
||||||
|
while 1 do
|
||||||
|
local n = x() -- pick a number until done
|
||||||
|
if n == nil then break end
|
||||||
|
print(n) -- must be a prime number
|
||||||
|
x = filter(n, x) -- now remove its multiples
|
||||||
|
end
|
|
@ -0,0 +1,14 @@
|
||||||
|
---
|
||||||
|
# This first play always runs on the local staging system
|
||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-beakerlib
|
||||||
|
tags:
|
||||||
|
- classic
|
||||||
|
- container
|
||||||
|
- atomic
|
||||||
|
tests:
|
||||||
|
- Smoke
|
||||||
|
required_packages:
|
||||||
|
- lua # Required for smoke test
|
||||||
|
- which # Required for smoke test
|
Loading…
Reference in New Issue