From: Vsevolod Stakhov Date: Tue, 4 Apr 2017 17:22:52 +0000 (+0100) Subject: [Fix] Fix processing of small tokens vectors X-Git-Tag: 1.5.5~47 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3be27b3358b4c4fd092af6979809eb237d1bff6a;p=rspamd.git [Fix] Fix processing of small tokens vectors --- 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++) {