summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2021-08-13 22:36:52 -0400
committerWilliam Wilgus <wilgus.william@gmail.com>2021-08-13 22:44:45 -0400
commit8c36d8b131f2172ce8caaa20057af4d35b72c781 (patch)
tree0203ef4c4b5e4cdc037321a4ee16c4a8c04672ae /apps
parentaad15d5cd79a23d238a3cd3256001d61c46b8e50 (diff)
lua Fix a few potential bugs
Change-Id: I0293371c58f1ca2d148b3b1e1f780cf76f312ef9
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/lua/lauxlib.c6
-rw-r--r--apps/plugins/lua/lmathlib.c5
-rw-r--r--apps/plugins/lua/lparser.c2
3 files changed, 10 insertions, 3 deletions
diff --git a/apps/plugins/lua/lauxlib.c b/apps/plugins/lua/lauxlib.c
index b8332427f0..9a5939aff9 100644
--- a/apps/plugins/lua/lauxlib.c
+++ b/apps/plugins/lua/lauxlib.c
@@ -803,8 +803,10 @@ static int panic (lua_State *L) {
LUALIB_API lua_State *luaL_newstate (void) {
lua_State *L = lua_newstate(l_alloc, NULL);
- lua_setallocf(L, l_alloc, L); /* allocator needs lua_State. */
- if (L) lua_atpanic(L, &panic);
+ if (L){
+ lua_setallocf(L, l_alloc, L); /* allocator needs lua_State. */
+ lua_atpanic(L, &panic);
+ }
return L;
}
diff --git a/apps/plugins/lua/lmathlib.c b/apps/plugins/lua/lmathlib.c
index 56c79afced..839d2014ad 100644
--- a/apps/plugins/lua/lmathlib.c
+++ b/apps/plugins/lua/lmathlib.c
@@ -96,7 +96,10 @@ static int math_floor (lua_State *L) {
static int math_fmod (lua_State *L) {
/* Was: lua_pushnumber(L, fmod(luaL_checknumber(L, 1), luaL_checknumber(L, 2))); */
- lua_pushnumber(L, luaL_checknumber(L, 1) % luaL_checknumber(L, 2));
+ lua_Number n = luaL_checknumber(L, 1);
+ lua_Number d = luaL_checknumber(L, 2);
+ luaL_argcheck(L, d != 0, 2, "division by zero");
+ lua_pushnumber(L, n % d);
return 1;
}
diff --git a/apps/plugins/lua/lparser.c b/apps/plugins/lua/lparser.c
index 23d3972036..06c62cedde 100644
--- a/apps/plugins/lua/lparser.c
+++ b/apps/plugins/lua/lparser.c
@@ -359,6 +359,8 @@ static void open_func (LexState *ls, FuncState *fs) {
static void close_func (LexState *ls) {
+ if (!ls || !ls->fs || !ls->fs->f)
+ return;
lua_State *L = ls->L;
FuncState *fs = ls->fs;
Proto *f = fs->f;