diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-13 09:26:40 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-13 09:26:40 +0100 |
commit | d4fbef4a601dc79f0a8515eed64f9b45f83085f2 (patch) | |
tree | b21a061e26d26ea2d9f1982a3c1557c22471839c /src/libserver/fuzzy_backend.c | |
parent | 7055f521c14f35249fb786f1a497c546ad1ff716 (diff) | |
download | rspamd-d4fbef4a601dc79f0a8515eed64f9b45f83085f2.tar.gz rspamd-d4fbef4a601dc79f0a8515eed64f9b45f83085f2.zip |
Sanitize NULL values for fuzzy backend.
Diffstat (limited to 'src/libserver/fuzzy_backend.c')
-rw-r--r-- | src/libserver/fuzzy_backend.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c index dad109819..9d1176fe3 100644 --- a/src/libserver/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend.c @@ -536,6 +536,10 @@ rspamd_fuzzy_backend_check (struct rspamd_fuzzy_backend *backend, cur_cnt, max_cnt; const char *digest; + if (backend == NULL) { + return rep; + } + /* Try direct match first of all */ rc = rspamd_fuzzy_backend_run_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK, cmd->digest); @@ -645,6 +649,10 @@ rspamd_fuzzy_backend_add (struct rspamd_fuzzy_backend *backend, gint64 id; const struct rspamd_fuzzy_shingle_cmd *shcmd; + if (backend == NULL) { + return FALSE; + } + rc = rspamd_fuzzy_backend_run_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK, cmd->digest); @@ -684,6 +692,10 @@ rspamd_fuzzy_backend_del (struct rspamd_fuzzy_backend *backend, { int rc; + if (backend == NULL) { + return FALSE; + } + rc = rspamd_fuzzy_backend_run_stmt (backend, RSPAMD_FUZZY_BACKEND_DELETE, cmd->digest); @@ -702,6 +714,10 @@ rspamd_fuzzy_backend_sync (struct rspamd_fuzzy_backend *backend, gint64 number; }; + if (backend == NULL) { + return FALSE; + } + /* Do not do more than 5k ops per step */ const guint64 max_changes = 5000; gboolean ret = FALSE; @@ -794,7 +810,7 @@ rspamd_fuzzy_backend_sync (struct rspamd_fuzzy_backend *backend, backend, NULL); } else { - msg_warn_fuzzy_backend ("cannot synchronise fuzzy backend: %e", err); + msg_warn_fuzzy_backend ("cannot synchronize fuzzy backend: %e", err); g_error_free (err); } @@ -806,6 +822,9 @@ void rspamd_fuzzy_backend_close (struct rspamd_fuzzy_backend *backend) { if (backend != NULL) { + rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT, + backend, NULL); + if (backend->db != NULL) { rspamd_fuzzy_backend_close_stmts (backend); sqlite3_close (backend->db); @@ -827,11 +846,11 @@ rspamd_fuzzy_backend_close (struct rspamd_fuzzy_backend *backend) gsize rspamd_fuzzy_backend_count (struct rspamd_fuzzy_backend *backend) { - return backend->count; + return backend != NULL ? backend->count : 0; } gsize rspamd_fuzzy_backend_expired (struct rspamd_fuzzy_backend *backend) { - return backend->expired; + return backend != NULL ? backend->expired : 0; } |