From 88fbe7ca1e5451851ee0c7ab5524c39a7bb703c2 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Sun, 6 Mar 2016 14:41:26 -0500 Subject: [PATCH] Use LuaErrors in security check macros Throwing a LuaError calls destructors as it propagates up the stack, wheres lua_error just executes a longjmp. --- src/script/cpp_api/s_security.h | 5 ++--- src/script/lua_api/l_util.cpp | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/script/cpp_api/s_security.h b/src/script/cpp_api/s_security.h index 4a4389cf..97bc5c06 100644 --- a/src/script/cpp_api/s_security.h +++ b/src/script/cpp_api/s_security.h @@ -25,9 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #define CHECK_SECURE_PATH(L, path) \ if (!ScriptApiSecurity::checkPath(L, path)) { \ - lua_pushstring(L, (std::string("Attempt to access external file ") + \ - path + " with mod security on.").c_str()); \ - lua_error(L); \ + throw LuaError(std::string("Attempt to access external file ") + \ + path + " with mod security on."); \ } #define CHECK_SECURE_PATH_OPTIONAL(L, path) \ if (ScriptApiSecurity::isSecure(L)) { \ diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index df46925d..98f70d91 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -77,8 +77,7 @@ int ModApiUtil::l_get_us_time(lua_State *L) #define CHECK_SECURE_SETTING(L, name) \ if (ScriptApiSecurity::isSecure(L) && \ name.compare(0, 7, "secure.") == 0) { \ - lua_pushliteral(L, "Attempt to set secure setting."); \ - lua_error(L); \ + throw LuaError("Attempt to set secure setting."); \ } // setting_set(name, value)