diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-12-14 13:08:14 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-12-14 13:08:14 +0000 |
commit | 7055b8410da2bbb1bf06d6a276ba91b45f6f3a08 (patch) | |
tree | 37f280189cb3942e9d2d0644559287aa4201f6fd /src/libserver/re_cache.c | |
parent | 59d171d45d642804f469a7ad82ec073478e26418 (diff) | |
download | rspamd-7055b8410da2bbb1bf06d6a276ba91b45f6f3a08.tar.gz rspamd-7055b8410da2bbb1bf06d6a276ba91b45f6f3a08.zip |
Assume empty input as failed scan
Diffstat (limited to 'src/libserver/re_cache.c')
-rw-r--r-- | src/libserver/re_cache.c | 13 |
1 files 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; } |