From: Vsevolod Stakhov Date: Mon, 14 Dec 2015 13:08:14 +0000 (+0000) Subject: Assume empty input as failed scan X-Git-Tag: 1.1.0~313 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7055b8410da2bbb1bf06d6a276ba91b45f6f3a08;p=rspamd.git Assume empty input as failed scan --- 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; }