From: Vsevolod Stakhov Date: Wed, 24 Feb 2016 14:34:09 +0000 (+0000) Subject: Fix DKIM verification for empty DKIM signatures X-Git-Tag: 1.2.0~177 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13b128038a84c8a90bd17dd47d73c27b1b9d7e49;p=thirdparty%2Frspamd.git Fix DKIM verification for empty DKIM signatures --- diff --git a/src/libserver/dkim.c b/src/libserver/dkim.c index f36299444b..2114065c31 100644 --- a/src/libserver/dkim.c +++ b/src/libserver/dkim.c @@ -496,6 +496,14 @@ rspamd_create_dkim_context (const gchar *sig, } state, next_state; + if (sig == NULL) { + g_set_error (err, + DKIM_ERROR, + DKIM_SIGERROR_EMPTY_B, + "empty signature"); + return NULL; + } + ctx = rspamd_mempool_alloc0 (pool, sizeof (rspamd_dkim_context_t)); ctx->pool = pool; ctx->header_canon_type = DKIM_CANON_DEFAULT; diff --git a/src/plugins/dkim_check.c b/src/plugins/dkim_check.c index 8147eb2700..7852ddd6c7 100644 --- a/src/plugins/dkim_check.c +++ b/src/plugins/dkim_check.c @@ -577,6 +577,13 @@ dkim_symbol_callback (struct rspamd_task *task, void *unused) while (hlist != NULL) { rh = (struct raw_header *)hlist->data; + if (rh->decoded == NULL || rh->decoded[0] == '\0') { + msg_info_task ("<%s> cannot load empty DKIM context", + task->message_id); + hlist = g_list_next (hlist); + continue; + } + if (res == NULL) { res = rspamd_mempool_alloc0 (task->task_pool, sizeof (*res)); res->prev = res; @@ -599,8 +606,8 @@ dkim_symbol_callback (struct rspamd_task *task, void *unused) &err); if (ctx == NULL) { if (err != NULL) { - msg_info_task ("<%s> cannot parse DKIM context: %s", - task->message_id, err->message); + msg_info_task ("<%s> cannot parse DKIM context: %e", + task->message_id, err); g_error_free (err); err = NULL; }