From: Francois Perrad Date: Wed, 22 Jun 2016 08:08:55 +0000 (+0200) Subject: lua: add upstream patch to fix 5.3.3 loop parser X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=23a9a94f1e78b51abcf2c84c4366c219726ad001;p=buildroot.git lua: add upstream patch to fix 5.3.3 loop parser Signed-off-by: Francois Perrad Signed-off-by: Peter Korsgaard --- 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); +--