[PATCH libubox 1/4] lua/uloop: fd_add() better args checking

Karl Palsson karlp at etactica.com
Tue Jun 30 06:38:41 EDT 2020


Actually check for flags being valid, instead of simply ignoring the
call if flags was zero.

Use standard lua checks for the function argument, so you can get a
normal "argument #2 was invalid, expected function, got xxx" instead of
the vague, "invalid arg list"

Signed-off-by: Karl Palsson <karlp at etactica.com>
---
 lua/uloop.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/lua/uloop.c b/lua/uloop.c
index 1b0389f..fcbe274 100644
--- a/lua/uloop.c
+++ b/lua/uloop.c
@@ -232,17 +232,14 @@ static int ul_ufd_add(lua_State *L)
 	int ref;
 	int fd_ref;
 
-	if (lua_isnumber(L, -1)) {
-		flags = lua_tointeger(L, -1);
-		lua_pop(L, 1);
-	}
-
-	if (!lua_isfunction(L, -1)) {
-		lua_pushstring(L, "invalid arg list");
+	flags = luaL_checkinteger(L, -1);
+	if (!flags) {
+		lua_pushstring(L, "flags cannot be zero");
 		lua_error(L);
-
-		return 0;
 	}
+	lua_pop(L, 1);
+
+	luaL_checktype(L, -1, LUA_TFUNCTION);
 
 	fd = get_sock_fd(L, -2);
 
@@ -261,8 +258,7 @@ static int ul_ufd_add(lua_State *L)
 	ufd->fd.fd = fd;
 	ufd->fd_r = fd_ref;
 	ufd->fd.cb = ul_ufd_cb;
-	if (flags)
-		uloop_fd_add(&ufd->fd, flags);
+	uloop_fd_add(&ufd->fd, flags);
 
 	return 1;
 }
-- 
2.21.3




More information about the openwrt-devel mailing list