From 49f1462f751e9681ccf4cde44c18cc7040fb094d Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Wed, 15 Mar 2023 16:32:28 -0700
Subject: [PATCH] Only let Lua run commands registered with COM_LUA

---
 src/command.c | 8 +++++++-
 src/command.h | 2 ++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/command.c b/src/command.c
index 3d3271ddbf..c2926c473b 100644
--- a/src/command.c
+++ b/src/command.c
@@ -544,7 +544,7 @@ int COM_AddLuaCommand(const char *name)
 	cmd = ZZ_Alloc(sizeof *cmd);
 	cmd->name = name;
 	cmd->function = COM_Lua_f;
-	cmd->flags = 0;
+	cmd->flags = COM_LUA;
 	cmd->next = com_commands;
 	com_commands = cmd;
 	return 0;
@@ -640,6 +640,12 @@ static void COM_ExecuteString(char *ptext)
 	{
 		if (!stricmp(com_argv[0], cmd->name)) //case insensitive now that we have lower and uppercase!
 		{
+			if ((com_flags & COM_LUA) && !(cmd->flags & COM_LUA))
+			{
+				CONS_Alert(CONS_WARNING, "Command '%s' cannot be run from Lua.\n", cmd->name);
+				return;
+			}
+
 			cmd->function();
 			return;
 		}
diff --git a/src/command.h b/src/command.h
index 93adfd4184..55b5ed8c65 100644
--- a/src/command.h
+++ b/src/command.h
@@ -29,6 +29,8 @@ typedef enum
 
 	// COM_BufInsertText etc: can only access cvars
 	// with CV_ALLOWLUA set.
+	// COM_AddCommand: without this flag, the command
+	// CANNOT be run from Lua.
 	COM_LUA         = 8,
 } com_flags_t;
 
-- 
GitLab