lua/uloop: fd_add() better args checking
authorKarl Palsson <karlp@etactica.com>
Tue, 30 Jun 2020 10:38:41 +0000 (10:38 +0000)
committerPetr Štetiar <ynezz@true.cz>
Sat, 11 Jul 2020 09:15:12 +0000 (11:15 +0200)
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@etactica.com>
lua/uloop.c

index 1b0389f12bc700a66ca4a30c3c53110bcf5417af..fcbe274970855942d59d1851e423159ffe4b915a 100644 (file)
@@ -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;
 }