diff options
-rw-r--r-- | src/libmime/message.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libmime/message.c b/src/libmime/message.c index 96e22545c..c35bc6772 100644 --- a/src/libmime/message.c +++ b/src/libmime/message.c @@ -402,7 +402,7 @@ process_raw_headers (struct rspamd_task *task, GHashTable *target, end = p + len; c = p; - while (p < end) { + while (p <= end) { /* FSM for processing headers */ switch (state) { case 0: @@ -485,7 +485,7 @@ process_raw_headers (struct rspamd_task *task, GHashTable *target, next_state = 3; err_state = 4; } - else if (*(p + 1) == '\0') { + else if (p + 1 == end) { state = 4; } else { @@ -525,6 +525,7 @@ process_raw_headers (struct rspamd_task *task, GHashTable *target, if (*(tp - 1) == ' ') { tp--; } + *tp = '\0'; new->value = tmp; new->decoded = g_mime_utils_header_decode_text (new->value); @@ -542,7 +543,7 @@ process_raw_headers (struct rspamd_task *task, GHashTable *target, break; case 99: /* Folding state */ - if (*(p + 1) == '\0') { + if (p + 1 == end) { state = err_state; } else { @@ -584,7 +585,7 @@ process_raw_headers (struct rspamd_task *task, GHashTable *target, p++; state = next_state; } - else if (*(p + 1) == '\0') { + else if (p + 1 == end) { state = next_state; p++; } |