From: Vsevolod Stakhov Date: Fri, 8 May 2009 15:04:41 +0000 (+0400) Subject: * Strip header values to avoid problems with libc functions X-Git-Tag: 0.2.7~147 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=17f26fd5ed8adec7a8c2c69ddac1934e56dff0c9;p=rspamd.git * Strip header values to avoid problems with libc functions --- diff --git a/src/fstring.c b/src/fstring.c index 2202effaf..935c8bdcc 100644 --- a/src/fstring.c +++ b/src/fstring.c @@ -338,3 +338,39 @@ fstrhash (f_str_t *str) } return hval; } + +void +fstrstrip (f_str_t *str) +{ + char *p = str->begin; + int r = 0; + + while (r < str->len) { + if (g_ascii_isspace (*p)) { + p ++; + r ++; + } + else { + break; + } + } + + if (r > 0) { + memmove (str->begin, p, str->len - r); + str->len -= r; + } + + r = str->len; + p = str->begin + str->len; + while (r > 0) { + if (g_ascii_isspace (*p)) { + p --; + r --; + } + else { + break; + } + } + + str->len = r; +} diff --git a/src/fstring.h b/src/fstring.h index f5d7fffa3..00fac9039 100644 --- a/src/fstring.h +++ b/src/fstring.h @@ -98,4 +98,9 @@ uint32_t fstrhash (f_str_t *str); */ char* fstrcstr (f_str_t *str, memory_pool_t *pool); +/* + * Strip fstr string from space symbols + */ +void fstrstrip (f_str_t *str); + #endif diff --git a/src/protocol.c b/src/protocol.c index a330334f8..49a86661b 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -100,6 +100,7 @@ separate_command (f_str_t *in, char c) if (*p == c) { *p = '\0'; in->begin = p + 1; + in->len -= r + 1; return b; } p ++; @@ -225,6 +226,7 @@ parse_header (struct worker_task *task, f_str_t *line) } /* Eat whitespaces */ g_strstrip (headern); + fstrstrip (line); switch (headern[0]) { case 'c':