mod_admin_telnet: Check for simple commands before executing in sandbox
authorKim Alvefur <zash@zash.se>
Fri, 10 May 2019 01:28:09 +0200
changeset 10071 598befab492e
parent 10070 216ae100c04a
child 10072 73a8192058f9
mod_admin_telnet: Check for simple commands before executing in sandbox This makes fixing yield over pcall boundry issue easier since it would have jumped to the thread error handler instead of proceeding to checking for simple commands.
plugins/mod_admin_telnet.lua
--- a/plugins/mod_admin_telnet.lua	Tue Jul 09 15:12:32 2019 +0200
+++ b/plugins/mod_admin_telnet.lua	Fri May 10 01:28:09 2019 +0200
@@ -114,6 +114,11 @@
 
 	session.env._ = line;
 
+	if not useglobalenv and commands[line:lower()] then
+		commands[line:lower()](session, line);
+		return;
+	end
+
 	local chunkname = "=console";
 	local env = (useglobalenv and redirect_output(_G, session)) or session.env or nil
 	local chunk, err = envload("return "..line, chunkname, env);
@@ -130,11 +135,6 @@
 
 	local ranok, taskok, message = pcall(chunk);
 
-	if not (ranok or message or useglobalenv) and commands[line:lower()] then
-		commands[line:lower()](session, line);
-		return;
-	end
-
 	if not ranok then
 		session.print("Fatal error while running command, it did not complete");
 		session.print("Error: "..taskok);