aboutsummaryrefslogtreecommitdiffstats
path: root/src/libserver/fuzzy_backend.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-13 09:26:40 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-10-13 09:26:40 +0100
commitd4fbef4a601dc79f0a8515eed64f9b45f83085f2 (patch)
treeb21a061e26d26ea2d9f1982a3c1557c22471839c /src/libserver/fuzzy_backend.c
parent7055f521c14f35249fb786f1a497c546ad1ff716 (diff)
downloadrspamd-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.c25
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;
}