diff options
-rw-r--r-- | src/libserver/url.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libserver/url.c b/src/libserver/url.c index 1afde3b6b..f4f07d4bd 100644 --- a/src/libserver/url.c +++ b/src/libserver/url.c @@ -119,14 +119,22 @@ struct url_matcher static_matchers[] = { /* Common prefixes */ {"file://", "", url_file_start, url_file_end, 0, 0}, + {"file:\\\\", "", url_file_start, url_file_end, + 0, 0}, {"ftp://", "", url_web_start, url_web_end, 0, 0}, + {"ftp:\\\\", "", url_web_start, url_web_end, + 0, 0}, {"sftp://", "", url_web_start, url_web_end, 0, 0}, {"http://", "", url_web_start, url_web_end, 0, 0}, + {"http:\\\\", "", url_web_start, url_web_end, + 0, 0}, {"https://", "", url_web_start, url_web_end, 0, 0}, + {"https:\\\\", "", url_web_start, url_web_end, + 0, 0}, {"news://", "", url_web_start, url_web_end, 0, 0}, {"nntp://", "", url_web_start, url_web_end, @@ -543,7 +551,7 @@ rspamd_mailto_parse (struct http_parser_url *u, const gchar *str, gsize len, p++; break; case parse_semicolon: - if (t == '/') { + if (t == '/' || t == '\\') { st = parse_slash; p++; } @@ -552,7 +560,7 @@ rspamd_mailto_parse (struct http_parser_url *u, const gchar *str, gsize len, } break; case parse_slash: - if (t == '/') { + if (t == '/' || t == '\\') { st = parse_slash_slash; } else { @@ -565,7 +573,7 @@ rspamd_mailto_parse (struct http_parser_url *u, const gchar *str, gsize len, st = parse_prefix_question; p++; } - else if (t != '/') { + else if (t != '/' && t != '\\') { c = p; st = parse_user; } |