From e591dcd91f5e6d1d3519e6e458427f1c649d4894 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 21 Jul 2018 12:10:21 +0100 Subject: [PATCH] [Minor] Relax requirements to find end-of-headers Issue: #2349 --- src/libutil/str_util.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libutil/str_util.c b/src/libutil/str_util.c index d17485ebf..4cdae61d4 100644 --- a/src/libutil/str_util.c +++ b/src/libutil/str_util.c @@ -1455,6 +1455,10 @@ rspamd_string_find_eoh (GString *input, goffset *body_start) p++; state = got_lf; } + else if (g_ascii_isspace (*p)) { + /* We have \r*, allow to stay in this state */ + p ++; + } else { p++; state = skip_char; @@ -1471,6 +1475,10 @@ rspamd_string_find_eoh (GString *input, goffset *body_start) else if (*p == '\r') { state = got_linebreak; } + else if (g_ascii_isspace (*p)) { + /* We have \n*, allow to stay in this state */ + p ++; + } else { p++; state = skip_char; @@ -1487,6 +1495,10 @@ rspamd_string_find_eoh (GString *input, goffset *body_start) p++; state = got_linebreak_lf; } + else if (g_ascii_isspace (*p)) { + /* We have *, allow to stay in this state */ + p ++; + } else { p++; state = skip_char; @@ -1502,6 +1514,10 @@ rspamd_string_find_eoh (GString *input, goffset *body_start) state = got_linebreak_lf; p++; } + else if (g_ascii_isspace (*p)) { + /* We have \r\n*, allow to keep in this state */ + p ++; + } else { p++; state = skip_char; -- 2.39.5