aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2020-07-08 14:44:47 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2020-07-08 14:44:47 +0100
commita52e5197df22659df1f611ce4505c505b461b365 (patch)
tree4666a0fa25fb6b3859c23d4438412ad110405eb9 /src
parent11da6af8ac176ffad051f246515ab008de8456a9 (diff)
downloadrspamd-a52e5197df22659df1f611ce4505c505b461b365.tar.gz
rspamd-a52e5197df22659df1f611ce4505c505b461b365.zip
[Minor] Fix extensions processing in fuzzy worker
Diffstat (limited to 'src')
-rw-r--r--src/fuzzy_storage.c9
1 files 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;