summaryrefslogtreecommitdiffstats
path: root/src/plugins/regexp.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-04-07 13:43:09 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-04-07 13:43:09 +0100
commit93e08dc6e00459b2fda6119bfc630b0fb996758c (patch)
treea87580f5a57c28a4fc2540932223167c0d8e77d7 /src/plugins/regexp.c
parentd5bd63254fb2df011b1499c27bc3741890c8ed9f (diff)
downloadrspamd-93e08dc6e00459b2fda6119bfc630b0fb996758c.tar.gz
rspamd-93e08dc6e00459b2fda6119bfc630b0fb996758c.zip
[Feature] Add magic for callback data in rspamd rules
Diffstat (limited to 'src/plugins/regexp.c')
-rw-r--r--src/plugins/regexp.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/regexp.c b/src/plugins/regexp.c
index d80b11f1f..deb5adab5 100644
--- a/src/plugins/regexp.c
+++ b/src/plugins/regexp.c
@@ -25,7 +25,10 @@
#include "libutil/map.h"
#include "lua/lua_common.h"
+static const guint64 rspamd_regexp_cb_magic = 0xca9d9649fc3e2659ULL;
+
struct regexp_module_item {
+ guint64 magic;
struct rspamd_expression *expr;
const gchar *symbol;
struct ucl_lua_funcdata *lua_function;
@@ -151,6 +154,8 @@ regexp_module_config (struct rspamd_config *cfg)
cur_item = rspamd_mempool_alloc0 (regexp_module_ctx->regexp_pool,
sizeof (struct regexp_module_item));
cur_item->symbol = ucl_object_key (value);
+ cur_item->magic = rspamd_regexp_cb_magic;
+
if (!read_regexp_expression (regexp_module_ctx->regexp_pool,
cur_item, ucl_object_key (value),
ucl_obj_tostring (value), cfg)) {
@@ -170,8 +175,10 @@ regexp_module_config (struct rspamd_config *cfg)
/* Just a lua function */
cur_item = rspamd_mempool_alloc0 (regexp_module_ctx->regexp_pool,
sizeof (struct regexp_module_item));
+ cur_item->magic = rspamd_regexp_cb_magic;
cur_item->symbol = ucl_object_key (value);
cur_item->lua_function = ucl_object_toclosure (value);
+
rspamd_symbols_cache_add_symbol (cfg->cache,
cur_item->symbol,
0,
@@ -199,6 +206,8 @@ regexp_module_config (struct rspamd_config *cfg)
cur_item = rspamd_mempool_alloc0 (regexp_module_ctx->regexp_pool,
sizeof (struct regexp_module_item));
cur_item->symbol = ucl_object_key (value);
+ cur_item->magic = rspamd_regexp_cb_magic;
+
if (!read_regexp_expression (regexp_module_ctx->regexp_pool,
cur_item, ucl_object_key (value),
ucl_obj_tostring (elt), cfg)) {
@@ -221,6 +230,7 @@ regexp_module_config (struct rspamd_config *cfg)
cur_item = rspamd_mempool_alloc0 (
regexp_module_ctx->regexp_pool,
sizeof (struct regexp_module_item));
+ cur_item->magic = rspamd_regexp_cb_magic;
cur_item->symbol = ucl_object_key (value);
cur_item->lua_function = ucl_object_toclosure (value);
}