diff --git a/package/lua/5.3.3/0012-fix-loop-parser.patch b/package/lua/5.3.3/0012-fix-loop-parser.patch new file mode 100644 index 0000000000..7b321e5ddf --- /dev/null +++ b/package/lua/5.3.3/0012-fix-loop-parser.patch @@ -0,0 +1,31 @@ +Expression list with four or more expressions in a 'for' loop can crash the interpreter. + +Fetch from: https://www.lua.org/bugs.html#5.3.3-1 + +Signed-off-by: Francois Perrad + +--- a/src/lparser.c ++++ b/src/lparser.c +@@ -323,6 +323,8 @@ + luaK_nil(fs, reg, extra); + } + } ++ if (nexps > nvars) ++ ls->fs->freereg -= nexps - nvars; /* remove extra values */ + } + + +@@ -1160,11 +1162,8 @@ + int nexps; + checknext(ls, '='); + nexps = explist(ls, &e); +- if (nexps != nvars) { ++ if (nexps != nvars) + adjust_assign(ls, nvars, nexps, &e); +- if (nexps > nvars) +- ls->fs->freereg -= nexps - nvars; /* remove extra values */ +- } + else { + luaK_setoneret(ls->fs, &e); /* close last expression */ + luaK_storevar(ls->fs, &lh->v, &e); +--