commit 9de464d: [Minor] Fix crash where inconsistent fuzzy query was sent

Vsevolod Stakhov vsevolod at highsecure.ru
Wed Oct 30 12:49:06 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-10-30 12:44:11 +0000
URL: https://github.com/rspamd/rspamd/commit/9de464d9ad75c4e9bfd13cb73814fd1665ce53f2

[Minor] Fix crash where inconsistent fuzzy query was sent

---
 src/plugins/fuzzy_check.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/plugins/fuzzy_check.c b/src/plugins/fuzzy_check.c
index 3eed0da51..58ba610fe 100644
--- a/src/plugins/fuzzy_check.c
+++ b/src/plugins/fuzzy_check.c
@@ -2960,7 +2960,8 @@ fuzzy_process_handler (struct rspamd_http_connection_entry *conn_ent,
 	struct fuzzy_rule *rule;
 	struct rspamd_controller_session *session = conn_ent->ud;
 	struct rspamd_task *task, **ptask;
-	gboolean processed = FALSE, res = TRUE, skip = FALSE;
+	gboolean processed = FALSE, skip = FALSE;
+	gint res = 0;
 	guint i;
 	GError **err;
 	GPtrArray *commands;
@@ -3118,19 +3119,24 @@ fuzzy_process_handler (struct rspamd_http_connection_entry *conn_ent,
 			}
 		}
 
-
-		if (res) {
+		if (res > 0) {
 			processed = TRUE;
 		}
 	}
 
 	if (res == -1) {
-		msg_warn_task ("cannot send fuzzy request: %s",
-				strerror (errno));
-		rspamd_controller_send_error (conn_ent, 400, "Message sending error");
-		rspamd_task_free (task);
+		if (!processed) {
+			msg_warn_task ("cannot send fuzzy request: %s",
+					strerror (errno));
+			rspamd_controller_send_error (conn_ent, 400, "Message sending error");
+			rspamd_task_free (task);
 
-		return;
+			return;
+		}
+		else {
+			/* Some rules failed and some rules are OK */
+			msg_warn_task ("some rules are not processed, but we still sent this request");
+		}
 	}
 	else if (!processed) {
 		if (rules) {


More information about the Commits mailing list