]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Avoid race between config new/free by using a counter
authorVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 27 Jul 2023 13:57:22 +0000 (14:57 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 27 Jul 2023 13:57:22 +0000 (14:57 +0100)
src/lua/lua_common.c

index c05b4346a1d47406db4f9ff38d7f22ffb1b97b4e..b543ae5db04c88abbd36e234138eba31cdc22a93 100644 (file)
@@ -908,7 +908,7 @@ rspamd_lua_wipe_realloc(void *ud,
 extern int luaopen_bit(lua_State *L);
 #endif
 
-static bool lua_initialized = false;
+static unsigned int lua_initialized = 0;
 
 lua_State *
 rspamd_lua_init(bool wipe_mem)
@@ -1032,7 +1032,7 @@ rspamd_lua_init(bool wipe_mem)
        lua_setglobal(L, "get_traces");
 #endif
 
-       lua_initialized = true;
+       lua_initialized++;
 
        return L;
 }
@@ -1058,12 +1058,12 @@ void rspamd_lua_close(lua_State *L)
        kh_destroy(lua_class_set, ctx->classes);
        g_free(ctx);
 
-       lua_initialized = false;
+       lua_initialized--;
 }
 
 bool rspamd_lua_is_initialised(void)
 {
-       return lua_initialized;
+       return lua_initialized != 0;
 }
 
 void rspamd_lua_start_gc(struct rspamd_config *cfg)