smart use of varargs may create functions that return too

many arguments and overflow the stack of C functions.
This commit is contained in:
Roberto Ierusalimschy 2009-07-02 16:57:34 -03:00
parent d57c9cdefc
commit 0c258c8492
1 changed files with 22 additions and 2 deletions

24
bugs
View File

@ -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.100 2009/06/15 14:12:59 roberto Exp roberto $
+** $Id: bugs,v 1.100 2009/06/15 14:12:59 roberto Exp roberto $
-** $Id: bugs,v 1.101 2009/07/01 21:10:33 roberto Exp roberto $
+** $Id: bugs,v 1.101 2009/07/01 21:10:33 roberto Exp roberto $
** load precompiled Lua chunks
** See Copyright Notice in lua.h
*/
@ -2193,3 +2193,23 @@ patch = [[
]],
}
But{
what = [[smart use of varargs may create functions that return too
many arguments and overflow the stack of C functions]],
report = [[Patrick Donnelly, on 2008/12/10]],
since = [[]],
example = [[
local function lunpack(i, ...)
if i == 0 then return ...
else
return lunpack(i-1, 1, ...)
end
end
Now, if C calls lunpack(n) with a huge n, it may end with
too many values in its stack and confuse its stack indices.
]],
patch = [[
]],
}
}