浏览代码

[Fix] Another fix for brain damaged obs-fws state

tags/2.5
Vsevolod Stakhov 4 年前
父节点
当前提交
447b68f359
共有 1 个文件被更改,包括 18 次插入18 次删除
  1. 18
    18
      src/libutil/str_util.c

+ 18
- 18
src/libutil/str_util.c 查看文件

@@ -1875,16 +1875,13 @@ rspamd_string_find_eoh (GString *input, goffset *body_start)
}
else {
/*
* newline wsp+ \r <nwsp>, hence:
* c -> eoh
* p + 1 -> body start
* <nline> <wsp>+ \r <nwsp>.
* It is an empty header likely, so we can go further...
* https://tools.ietf.org/html/rfc2822#section-4.2
*/
if (body_start) {
/* \r\n\r\n */
*body_start = p - input->str + 1;
}

return c - input->str;
c = p;
p ++;
state = got_cr;
}
}
else {
@@ -1899,33 +1896,36 @@ rspamd_string_find_eoh (GString *input, goffset *body_start)
else if (*p == '\n') {
/* Perform lookahead due to #2349 */
if (end - p > 1) {
/* Continue folding with an empty line */
if (p[1] == ' ' || p[1] == '\t') {
c = p;
p ++;
state = obs_fws;
}
else if (p[1] == '\r') {
/* WTF state: we have seen spaces, \n and then it follows \r */
c = p;
p ++;
state = got_lf;
}
else if (p[1] == '\n') {
/*
* Switching to got_lf state here will let us to finish
* the cycle.
*/
c = p;
p ++;
state = got_lf;
}
else {
/*
* newline wsp+ \n <nwsp>, hence:
* c -> eoh
* p + 1 -> body start
* <nline> <wsp>+ \n <nwsp>.
* It is an empty header likely, so we can go further...
* https://tools.ietf.org/html/rfc2822#section-4.2
*/
if (body_start) {
/* \r\n\r\n */
*body_start = p - input->str + 1;
}

return c - input->str;
c = p;
p ++;
state = got_lf;
}

}

正在加载...
取消
保存