diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-23 16:17:39 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-23 16:17:39 +0000 |
commit | 4b11f51f8e13ec8b77041c37279079d057a5e864 (patch) | |
tree | 5e2b7341dbec7b1c019840316c14c85f9dcd6985 /src/libmime | |
parent | fe88805f2cea26e7642655c04613e7a32c9f9721 (diff) | |
download | rspamd-4b11f51f8e13ec8b77041c37279079d057a5e864.tar.gz rspamd-4b11f51f8e13ec8b77041c37279079d057a5e864.zip |
Fixes to mime regexp parsing.
Diffstat (limited to 'src/libmime')
-rw-r--r-- | src/libmime/mime_expressions.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libmime/mime_expressions.c b/src/libmime/mime_expressions.c index 841610480..6034e3357 100644 --- a/src/libmime/mime_expressions.c +++ b/src/libmime/mime_expressions.c @@ -567,7 +567,9 @@ rspamd_mime_expr_parse (const gchar *line, gsize len, break; case bad_atom: g_set_error (err, rspamd_mime_expr_quark(), 100, "cannot parse" - " mime atom '%*.s' when reading symbol '%c'", (gint)len, line, t); + " mime atom '%s' when reading symbol '%c' at offset %d, " + "near %*.s", line, t, (gint)(p - line), + (gint)MIN (end - p, 10), p); return NULL; case end_atom: goto set; @@ -575,9 +577,9 @@ rspamd_mime_expr_parse (const gchar *line, gsize len, } set: - if (p - line == 0 || (state != got_ebrace || state != got_second_slash || - state != in_flags)) { - g_set_error (err, rspamd_mime_expr_quark(), 200, "inclomplete or empty" + if (p - line == 0 || (state != got_ebrace && state != got_second_slash && + state != in_flags && state != end_atom)) { + g_set_error (err, rspamd_mime_expr_quark(), 200, "incomplete or empty" " mime atom"); return NULL; } |