Commit 3fb0de85 authored by Johny Mattsson's avatar Johny Mattsson
Browse files

Range check the tmr interval value.

Plain SDK 1.5.0 bugs out for values >6871948 or so - this commit does
not do anything to mitigate that.
parent dcbdfc8e
...@@ -140,10 +140,11 @@ static int tmr_register(lua_State* L){ ...@@ -140,10 +140,11 @@ static int tmr_register(lua_State* L){
sint32_t interval = luaL_checkinteger(L, 2); sint32_t interval = luaL_checkinteger(L, 2);
uint8_t mode = luaL_checkinteger(L, 3); uint8_t mode = luaL_checkinteger(L, 3);
//validate arguments //validate arguments
uint8_t args_valid = interval <= 0 const int32_t MAX_TIMEOUT = 0xC49BA5; // assuming system_timer_reinit() has *not* been called
uint8_t args_invalid = (interval <= 0 || interval > MAX_TIMEOUT)
|| (mode != TIMER_MODE_SINGLE && mode != TIMER_MODE_SEMI && mode != TIMER_MODE_AUTO) || (mode != TIMER_MODE_SINGLE && mode != TIMER_MODE_SEMI && mode != TIMER_MODE_AUTO)
|| (lua_type(L, 4) != LUA_TFUNCTION && lua_type(L, 4) != LUA_TLIGHTFUNCTION); || (lua_type(L, 4) != LUA_TFUNCTION && lua_type(L, 4) != LUA_TLIGHTFUNCTION);
if(args_valid) if(args_invalid)
return luaL_error(L, "wrong arg range"); return luaL_error(L, "wrong arg range");
//get the lua function reference //get the lua function reference
lua_pushvalue(L, 4); lua_pushvalue(L, 4);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment