summaryrefslogtreecommitdiffstats
path: root/src/libserver
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-07-07 16:02:01 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-07-07 16:02:01 +0100
commit65a811fb43b0d0e3557e53c9cf18131e20ba5456 (patch)
tree20f3b694f72c32904d220eb15c622a015d7d695c /src/libserver
parentfcd2daa1c3d0613f6adb9bbb3f7cccac8318cf50 (diff)
downloadrspamd-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.c12
-rw-r--r--src/libserver/task.h6
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 */