diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-07-07 16:02:01 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-07-07 16:02:01 +0100 |
commit | 65a811fb43b0d0e3557e53c9cf18131e20ba5456 (patch) | |
tree | 20f3b694f72c32904d220eb15c622a015d7d695c /src/libserver | |
parent | fcd2daa1c3d0613f6adb9bbb3f7cccac8318cf50 (diff) | |
download | rspamd-65a811fb43b0d0e3557e53c9cf18131e20ba5456.tar.gz rspamd-65a811fb43b0d0e3557e53c9cf18131e20ba5456.zip |
[Fix] More fixes to end of headers detection
Diffstat (limited to 'src/libserver')
-rw-r--r-- | src/libserver/dkim.c | 12 | ||||
-rw-r--r-- | src/libserver/task.h | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/libserver/dkim.c b/src/libserver/dkim.c index 3fdaae84d..89a8b9175 100644 --- a/src/libserver/dkim.c +++ b/src/libserver/dkim.c @@ -1793,7 +1793,11 @@ rspamd_dkim_check (rspamd_dkim_context_t *ctx, /* First of all find place of body */ p = task->msg.begin; body_end = task->msg.begin + task->msg.len; - body_start = task->msg.begin + task->raw_headers_content.len; + body_start = task->raw_headers_content.body_start; + + if (!body_start) { + return DKIM_RECORD_ERROR; + } /* Start canonization of body part */ if (!rspamd_dkim_canonize_body (&ctx->common, body_start, body_end)) { @@ -2049,12 +2053,16 @@ rspamd_dkim_sign (struct rspamd_task *task, /* First of all find place of body */ p = task->msg.begin; body_end = task->msg.begin + task->msg.len; - body_start = task->msg.begin + task->raw_headers_content.len; + body_start = task->raw_headers_content.body_start; if (len > 0) { ctx->common.len = len; } + if (!body_start) { + return NULL; + } + /* Start canonization of body part */ if (!rspamd_dkim_canonize_body (&ctx->common, body_start, body_end)) { return NULL; diff --git a/src/libserver/task.h b/src/libserver/task.h index f34c2ce10..4fb2ba3e3 100644 --- a/src/libserver/task.h +++ b/src/libserver/task.h @@ -142,7 +142,11 @@ struct rspamd_task { GMimeMessage *message; /**< message, parsed with GMime */ GPtrArray *parts; /**< list of parsed parts */ GPtrArray *text_parts; /**< list of text parts */ - rspamd_ftok_t raw_headers_content; /**< list of raw headers */ + struct { + const gchar *begin; + gsize len; + const gchar *body_start; + } raw_headers_content; /**< list of raw headers */ GPtrArray *received; /**< list of received headers */ GHashTable *urls; /**< list of parsed urls */ GHashTable *emails; /**< list of parsed emails */ |