aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2019-10-12 09:53:08 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2019-10-12 09:53:08 +0100
commit42a4b088c79eb86aa44cd44ce7d19c862e5289b9 (patch)
tree3d6bb56d6368c30a3bd97814e5ae55db83eec25d /src
parent08ffbddaa8671a83ccaa08bd4a4d25b1342066d9 (diff)
downloadrspamd-42a4b088c79eb86aa44cd44ce7d19c862e5289b9.tar.gz
rspamd-42a4b088c79eb86aa44cd44ce7d19c862e5289b9.zip
[Fix] Fix crash due to constructors init order
Issue: #3079
Diffstat (limited to 'src')
-rw-r--r--src/libutil/mem_pool.c5
-rw-r--r--src/lua/lua_regexp.c10
2 files changed, 8 insertions, 7 deletions
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