|
@@ -1880,8 +1880,8 @@ patch = [[
|
|
|
+++ lundump.c 2008/04/04 19:51:41 2.7.1.4
|
|
|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
--** $Id: bugs,v 1.133 2014/09/01 16:56:01 roberto Exp roberto $
|
|
|
-+** $Id: bugs,v 1.133 2014/09/01 16:56:01 roberto Exp roberto $
|
|
|
+-** $Id: bugs,v 1.134 2015/02/09 17:57:45 roberto Exp roberto $
|
|
|
++** $Id: bugs,v 1.134 2015/02/09 17:57:45 roberto Exp roberto $
|
|
|
** load precompiled Lua chunks
|
|
|
** See Copyright Notice in lua.h
|
|
|
*/
|
|
@@ -3273,6 +3273,94 @@ patch = [[
|
|
|
}
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------------
|
|
|
+-- Lua 5.3.0
|
|
|
+
|
|
|
+Bug{
|
|
|
+what = [['string.format("%f")' can cause a buffer overflow
|
|
|
+(only when 'lua_Number' is long double!)]],
|
|
|
+report = [[Roberto, 2015/01/13]],
|
|
|
+since = [[5.3]],
|
|
|
+fix = nil,
|
|
|
+example = [[string.format("%.99f", 1e4000) -- when floats are long double]],
|
|
|
+patch = [[
|
|
|
+]]
|
|
|
+}
|
|
|
+
|
|
|
+Bug{
|
|
|
+what = [['debug.getlocal' on a coroutine suspended in a hook
|
|
|
+can crash the interpreter]],
|
|
|
+report = [[云风, 2015/02/11]],
|
|
|
+since = [[5.2]],
|
|
|
+fix = nil,
|
|
|
+example = [[see http://lua-users.org/lists/lua-l/2015-02/msg00146.html]],
|
|
|
+patch = [[
|
|
|
+--- ldebug.c 2015/01/02 12:52:22 2.110
|
|
|
++++ ldebug.c 2015/02/13 16:03:23
|
|
|
+@@ -1,4 +1,4 @@
|
|
|
+ /*
|
|
|
+-** $Id: ldebug.c,v 2.110 2015/01/02 12:52:22 roberto Exp $
|
|
|
++** $Id: ldebug.c,v 2.111 2015/02/13 16:01:17 roberto Exp $
|
|
|
+ ** Debug Interface
|
|
|
+ ** See Copyright Notice in lua.h
|
|
|
+@@ -49,4 +49,14 @@
|
|
|
+
|
|
|
+
|
|
|
++static void swapextra (lua_State *L) {
|
|
|
++ if (L->status == LUA_YIELD) {
|
|
|
++ CallInfo *ci = L->ci; /* get function that yielded */
|
|
|
++ StkId temp = ci->func; /* exchange its 'func' and 'extra' values */
|
|
|
++ ci->func = restorestack(L, ci->extra);
|
|
|
++ ci->extra = savestack(L, temp);
|
|
|
++ }
|
|
|
++}
|
|
|
++
|
|
|
++
|
|
|
+ /*
|
|
|
+ ** this function can be called asynchronous (e.g. during a signal)
|
|
|
+@@ -145,4 +155,5 @@
|
|
|
+ const char *name;
|
|
|
+ lua_lock(L);
|
|
|
++ swapextra(L);
|
|
|
+ if (ar == NULL) { /* information about non-active function? */
|
|
|
+ if (!isLfunction(L->top - 1)) /* not a Lua function? */
|
|
|
+@@ -159,4 +170,5 @@
|
|
|
+ }
|
|
|
+ }
|
|
|
++ swapextra(L);
|
|
|
+ lua_unlock(L);
|
|
|
+ return name;
|
|
|
+@@ -166,10 +178,13 @@
|
|
|
+ LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n) {
|
|
|
+ StkId pos = 0; /* to avoid warnings */
|
|
|
+- const char *name = findlocal(L, ar->i_ci, n, &pos);
|
|
|
++ const char *name;
|
|
|
+ lua_lock(L);
|
|
|
++ swapextra(L);
|
|
|
++ name = findlocal(L, ar->i_ci, n, &pos);
|
|
|
+ if (name) {
|
|
|
+ setobjs2s(L, pos, L->top - 1);
|
|
|
+ L->top--; /* pop value */
|
|
|
+ }
|
|
|
++ swapextra(L);
|
|
|
+ lua_unlock(L);
|
|
|
+ return name;
|
|
|
+@@ -271,4 +286,5 @@
|
|
|
+ StkId func;
|
|
|
+ lua_lock(L);
|
|
|
++ swapextra(L);
|
|
|
+ if (*what == '>') {
|
|
|
+ ci = NULL;
|
|
|
+@@ -289,4 +305,5 @@
|
|
|
+ api_incr_top(L);
|
|
|
+ }
|
|
|
++ swapextra(L);
|
|
|
+ if (strchr(what, 'L'))
|
|
|
+ collectvalidlines(L, cl);
|
|
|
+]]
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
--[=[
|
|
|
Bug{
|
|
|
what = [[ ]],
|
|
@@ -3284,3 +3372,5 @@ patch = [[
|
|
|
]]
|
|
|
}
|
|
|
]=]
|
|
|
+
|
|
|
+
|