From a52e5197df22659df1f611ce4505c505b461b365 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 8 Jul 2020 14:44:47 +0100 Subject: [PATCH] [Minor] Fix extensions processing in fuzzy worker --- src/fuzzy_storage.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c index 0d7721ffb..f9c669452 100644 --- a/src/fuzzy_storage.c +++ b/src/fuzzy_storage.c @@ -1118,12 +1118,12 @@ rspamd_fuzzy_command_valid (struct rspamd_fuzzy_cmd *cmd, gint r) switch (cmd->version) { case 4: if (cmd->shingles_count > 0) { - if (r == sizeof (struct rspamd_fuzzy_shingle_cmd)) { + if (r >= sizeof (struct rspamd_fuzzy_shingle_cmd)) { ret = RSPAMD_FUZZY_EPOCH11; } } else { - if (r == sizeof (*cmd)) { + if (r >= sizeof (*cmd)) { ret = RSPAMD_FUZZY_EPOCH11; } } @@ -1223,7 +1223,7 @@ rspamd_fuzzy_decrypt_command (struct fuzzy_session *s, guchar *buf, gsize buflen static gboolean rspamd_fuzzy_extensions_from_wire (struct fuzzy_session *s, guchar *buf, gsize buflen) { - struct rspamd_fuzzy_cmd_extension *ext; + struct rspamd_fuzzy_cmd_extension *ext, *prev_ext; guchar *storage, *p = buf, *end = buf + buflen; gsize st_len = 0, n_ext = 0; @@ -1295,6 +1295,7 @@ rspamd_fuzzy_extensions_from_wire (struct fuzzy_session *s, guchar *buf, gsize b /* All validation has been done, so we can just go further */ while (p < end) { + prev_ext = ext; guchar cmd = *p++; if (cmd == RSPAMD_FUZZY_EXT_SOURCE_DOMAIN) { @@ -1338,7 +1339,7 @@ rspamd_fuzzy_extensions_from_wire (struct fuzzy_session *s, guchar *buf, gsize b } /* Last next should be NULL */ - ext->next = NULL; + prev_ext->next = NULL; /* Rewind to the begin */ ext = (struct rspamd_fuzzy_cmd_extension *)storage; -- 2.39.5