From: Vsevolod Stakhov Date: Thu, 31 Jan 2019 12:19:43 +0000 (+0000) Subject: [Fix] Core: Fix headers folding on the last token X-Git-Tag: 1.9.0~229 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9dcae9b27979fd4acc541d89877d74e6dc8e0980;p=thirdparty%2Frspamd.git [Fix] Core: Fix headers folding on the last token --- diff --git a/src/libutil/str_util.c b/src/libutil/str_util.c index e729629048..2e09e48f3e 100644 --- a/src/libutil/str_util.c +++ b/src/libutil/str_util.c @@ -1394,7 +1394,33 @@ rspamd_header_value_fold (const gchar *name, case after_quote: g_string_append_len (res, c, p - c); break; - + case fold_token: + /* Here, we have token start at 'c' and token end at 'p' */ + if (g_ascii_isspace (res->str[res->len - 1])) { + g_string_append_len (res, c, p - c); + } + else { + if (*c != '\r' && *c != '\n') { + /* We need to add folding as well */ + switch (how) { + case RSPAMD_TASK_NEWLINES_LF: + g_string_append_len (res, "\n\t", 2); + break; + case RSPAMD_TASK_NEWLINES_CR: + g_string_append_len (res, "\r\t", 2); + break; + case RSPAMD_TASK_NEWLINES_CRLF: + default: + g_string_append_len (res, "\r\n\t", 3); + break; + } + g_string_append_len (res, c, p - c); + } + else { + g_string_append_len (res, c, p - c); + } + } + break; default: g_assert (p == c); break;