From 3be27b3358b4c4fd092af6979809eb237d1bff6a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 4 Apr 2017 18:22:52 +0100 Subject: [PATCH] [Fix] Fix processing of small tokens vectors --- src/libstat/tokenizers/osb.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libstat/tokenizers/osb.c b/src/libstat/tokenizers/osb.c index 6be660b41..f0e351bb5 100644 --- a/src/libstat/tokenizers/osb.c +++ b/src/libstat/tokenizers/osb.c @@ -290,7 +290,11 @@ rspamd_tokenizer_osb (struct rspamd_stat_ctx *ctx, } hashpipe = g_alloca (window_size * sizeof (hashpipe[0])); - memset (hashpipe, 0xfe, window_size * sizeof (hashpipe[0])); + for (i = 0; i < window_size; i++) { + hashpipe[i].h = 0xfe; + hashpipe[i].t = NULL; + } + token_size = sizeof (rspamd_token_t) + sizeof (gdouble) * ctx->statfiles->len; g_assert (token_size > 0); @@ -364,8 +368,9 @@ rspamd_tokenizer_osb (struct rspamd_stat_ctx *ctx, } } - if (processed <= window_size) { - memmove (hashpipe, &hashpipe[window_size - processed + 1], + if (processed > 1 && processed <= window_size) { + processed --; + memmove (hashpipe, &hashpipe[window_size - processed], processed * sizeof (hashpipe[0])); for (i = 1; i < processed; i++) { -- 2.39.5