From: Vsevolod Stakhov Date: Wed, 8 Jul 2020 13:44:47 +0000 (+0100) Subject: [Minor] Fix extensions processing in fuzzy worker X-Git-Tag: 2.6~254 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a52e5197df22659df1f611ce4505c505b461b365;p=thirdparty%2Frspamd.git [Minor] Fix extensions processing in fuzzy worker --- diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c index 0d7721ffbe..f9c6694520 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;