From 7055b8410da2bbb1bf06d6a276ba91b45f6f3a08 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 14 Dec 2015 13:08:14 +0000 Subject: [PATCH] Assume empty input as failed scan --- src/libserver/re_cache.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/libserver/re_cache.c b/src/libserver/re_cache.c index 95d64edf9..63af03202 100644 --- a/src/libserver/re_cache.c +++ b/src/libserver/re_cache.c @@ -529,12 +529,19 @@ rspamd_re_cache_process_regexp_data (struct rspamd_re_runtime *rt, struct rspamd_re_cache_elt *elt; struct rspamd_re_class *re_class; guint64 re_id; - guint ret; + guint ret = 0; re_id = rspamd_regexp_get_cache_id (re); elt = g_ptr_array_index (rt->cache->re, re_id); re_class = rspamd_regexp_get_class (re); + if (len == 0 || in == NULL) { + /* We assume this as absence of the specified data */ + setbit (rt->checked, re_id); + rt->results[re_id] = ret; + return ret; + } + #ifndef WITH_HYPERSCAN ret = rspamd_re_cache_process_pcre (rt, re, in, len, is_raw); setbit (rt->checked, re_id); @@ -548,10 +555,6 @@ rspamd_re_cache_process_regexp_data (struct rspamd_re_runtime *rt, rt->results[re_id] = ret; } else { - if (len == 0) { - len = strlen (in); - } - if (rt->cache->max_re_data > 0 && len > rt->cache->max_re_data) { len = rt->cache->max_re_data; } -- 2.39.5