Skip to content

Commit bc71622

Browse files
authoredOct 5, 2021
Fix crash when calling remove/kick/ban_player on start (#11672)
1 parent 5aa95fe commit bc71622

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed
 

Diff for: ‎src/script/lua_api/l_server.cpp

+9-2
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,10 @@ int ModApiServer::l_ban_player(lua_State *L)
293293
{
294294
NO_MAP_LOCK_REQUIRED;
295295

296-
Server *server = getServer(L);
296+
if (!getEnv(L))
297+
throw LuaError("Can't ban player before server has started up");
297298

299+
Server *server = getServer(L);
298300
const char *name = luaL_checkstring(L, 1);
299301
RemotePlayer *player = server->getEnv().getPlayer(name);
300302
if (!player) {
@@ -312,6 +314,10 @@ int ModApiServer::l_ban_player(lua_State *L)
312314
int ModApiServer::l_kick_player(lua_State *L)
313315
{
314316
NO_MAP_LOCK_REQUIRED;
317+
318+
if (!getEnv(L))
319+
throw LuaError("Can't kick player before server has started up");
320+
315321
const char *name = luaL_checkstring(L, 1);
316322
std::string message("Kicked");
317323
if (lua_isstring(L, 2))
@@ -334,7 +340,8 @@ int ModApiServer::l_remove_player(lua_State *L)
334340
NO_MAP_LOCK_REQUIRED;
335341
std::string name = luaL_checkstring(L, 1);
336342
ServerEnvironment *s_env = dynamic_cast<ServerEnvironment *>(getEnv(L));
337-
assert(s_env);
343+
if (!s_env)
344+
throw LuaError("Can't remove player before server has started up");
338345

339346
RemotePlayer *player = s_env->getPlayer(name.c_str());
340347
if (!player)

0 commit comments

Comments
 (0)
Please sign in to comment.