From: Vsevolod Stakhov Date: Tue, 24 Nov 2015 14:44:26 +0000 (+0000) Subject: Fix critical issue in adding fuzzy hashes X-Git-Tag: 1.1.0~491 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=54918933b03a19664a7901aca13c03073a7594ef;p=rspamd.git Fix critical issue in adding fuzzy hashes --- diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c index 611d212c4..3105fdf11 100644 --- a/src/libserver/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend.c @@ -607,47 +607,45 @@ rspamd_fuzzy_backend_add (struct rspamd_fuzzy_backend *backend, } } else { - if (rc == SQLITE_OK) { - rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE, - RSPAMD_FUZZY_BACKEND_INSERT, - (gint) cmd->flag, - cmd->digest, - (gint64) cmd->value, - (gint64) time (NULL)); + rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE, + RSPAMD_FUZZY_BACKEND_INSERT, + (gint) cmd->flag, + cmd->digest, + (gint64) cmd->value, + (gint64) time (NULL)); - if (rc == SQLITE_OK) { - if (cmd->shingles_count > 0) { - id = sqlite3_last_insert_rowid (backend->db); - shcmd = (const struct rspamd_fuzzy_shingle_cmd *) cmd; - - for (i = 0; i < RSPAMD_SHINGLE_SIZE; i++) { - rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE, - RSPAMD_FUZZY_BACKEND_INSERT_SHINGLE, - shcmd->sgl.hashes[i], i, id); - msg_debug_fuzzy_backend ("add shingle %d -> %L: %L", - i, + if (rc == SQLITE_OK) { + if (cmd->shingles_count > 0) { + id = sqlite3_last_insert_rowid (backend->db); + shcmd = (const struct rspamd_fuzzy_shingle_cmd *) cmd; + + for (i = 0; i < RSPAMD_SHINGLE_SIZE; i++) { + rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE, + RSPAMD_FUZZY_BACKEND_INSERT_SHINGLE, + shcmd->sgl.hashes[i], i, id); + msg_debug_fuzzy_backend ("add shingle %d -> %L: %L", + i, + shcmd->sgl.hashes[i], + id); + + if (rc != SQLITE_OK) { + msg_warn_fuzzy_backend ("cannot add shingle %d -> " + "%L: %L: %s", i, shcmd->sgl.hashes[i], - id); - - if (rc != SQLITE_OK) { - msg_warn_fuzzy_backend ("cannot add shingle %d -> " - "%L: %L: %s", i, - shcmd->sgl.hashes[i], - id, sqlite3_errmsg (backend->db)); - } + id, sqlite3_errmsg (backend->db)); } } } - else { - msg_warn_fuzzy_backend ("cannot add hash to %d -> " - "%*xs: %s", (gint)cmd->flag, - (gint)sizeof (cmd->digest), cmd->digest, - sqlite3_errmsg (backend->db)); - } - - rspamd_fuzzy_backend_cleanup_stmt (backend, - RSPAMD_FUZZY_BACKEND_INSERT); } + else { + msg_warn_fuzzy_backend ("cannot add hash to %d -> " + "%*xs: %s", (gint)cmd->flag, + (gint)sizeof (cmd->digest), cmd->digest, + sqlite3_errmsg (backend->db)); + } + + rspamd_fuzzy_backend_cleanup_stmt (backend, + RSPAMD_FUZZY_BACKEND_INSERT); } if (rc == SQLITE_OK) { diff --git a/src/plugins/fuzzy_check.c b/src/plugins/fuzzy_check.c index be1b556c8..cf58eb672 100644 --- a/src/plugins/fuzzy_check.c +++ b/src/plugins/fuzzy_check.c @@ -1110,10 +1110,11 @@ fuzzy_controller_io_callback (gint fd, short what, void *arg) else { msg_info_task ("cannot process fuzzy hash for message " "<%s>, " - "list %s:%d", + "list %s:%d, error: %d", session->task->message_id, symbol, - rep->flag); + rep->flag, + rep->value); if (*(session->err) == NULL) { g_set_error (session->err, g_quark_from_static_string ("fuzzy check"),