From: Vsevolod Stakhov Date: Sat, 12 Oct 2019 08:53:08 +0000 (+0100) Subject: [Fix] Fix crash due to constructors init order X-Git-Tag: 2.1~101 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=42a4b088c79eb86aa44cd44ce7d19c862e5289b9;p=rspamd.git [Fix] Fix crash due to constructors init order Issue: #3079 --- diff --git a/src/libutil/mem_pool.c b/src/libutil/mem_pool.c index 703337663..c01ce0c2c 100644 --- a/src/libutil/mem_pool.c +++ b/src/libutil/mem_pool.c @@ -111,7 +111,7 @@ pool_chain_free (struct _pool_chain *chain) chain->slice_size - occupied : 0); } -/* By default allocate 8Kb chunks of memory */ +/* By default allocate 4Kb chunks of memory */ #define FIXED_POOL_SIZE 4096 static inline struct rspamd_mempool_entry_point * @@ -156,6 +156,7 @@ RSPAMD_DESTRUCTOR (rspamd_mempool_entries_dtor) }); kh_destroy (mempool_entry, mempool_entries); + mempool_entries = NULL; } static inline struct rspamd_mempool_entry_point * @@ -676,7 +677,7 @@ rspamd_mempool_delete (rspamd_mempool_t * pool) cur = pool->pools[RSPAMD_MEMPOOL_NORMAL]; } - if (cur) { + if (cur && mempool_entries) { pool->entry->elts[pool->entry->cur_elts].leftover = pool_chain_free (cur); diff --git a/src/lua/lua_regexp.c b/src/lua/lua_regexp.c index ae1f2007a..764bb6de1 100644 --- a/src/lua/lua_regexp.c +++ b/src/lua/lua_regexp.c @@ -889,16 +889,16 @@ lua_load_regexp (lua_State * L) void luaopen_regexp (lua_State * L) { + if (!regexp_static_pool) { + regexp_static_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), + "regexp_lua_pool"); + } + rspamd_lua_new_class (L, "rspamd{regexp}", regexplib_m); lua_pop (L, 1); rspamd_lua_add_preload (L, "rspamd_regexp", lua_load_regexp); } -RSPAMD_CONSTRUCTOR (lua_re_static_pool_ctor) { - regexp_static_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), - "regexp_lua_pool"); -} - RSPAMD_DESTRUCTOR (lua_re_static_pool_dtor) { rspamd_mempool_delete (regexp_static_pool); } \ No newline at end of file