From 720987367ad7a7776d66db901df9548a41af5671 Mon Sep 17 00:00:00 2001
From: Yukita Mayako <catgirl@goddess.moe>
Date: Tue, 8 Aug 2017 14:27:02 -0500
Subject: [PATCH] Prevent cvar naming conflicts from pointing Lua to the wrong
 internal data.

---
 src/lua_consolelib.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/lua_consolelib.c b/src/lua_consolelib.c
index 28cc917628..566e73748e 100644
--- a/src/lua_consolelib.c
+++ b/src/lua_consolelib.c
@@ -391,12 +391,21 @@ static int lib_cvRegisterVar(lua_State *L)
 	// stack: cvar table, cvar userdata
 	lua_getfield(L, LUA_REGISTRYINDEX, "CV_Vars");
 	I_Assert(lua_istable(L, 3));
+
+	lua_getfield(L, 3, cvar->name);
+	if (lua_type(L, -1) != LUA_TNIL)
+		return luaL_error(L, M_GetText("Variable %s is already defined\n"), cvar->name);
+	lua_pop(L, 1);
+
 	lua_pushvalue(L, 2);
 	lua_setfield(L, 3, cvar->name);
 	lua_pop(L, 1);
 
 	// actually time to register it to the console now! Finally!
+	cvar->flags |= CV_MODIFIED;
 	CV_RegisterVar(cvar);
+	if (cvar->flags & CV_MODIFIED)
+		return luaL_error(L, "failed to register cvar (probable conflict with internal variable/command names)");
 
 	// return cvar userdata
 	return 1;
-- 
GitLab