From 8505221b7161ba62c5a69b08e34462b0e0020984 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 24 Nov 2016 14:07:11 +0000 Subject: [PATCH] [Fix] More fixes for URLs with backslashes --- src/libserver/url.c | 14 +++++++++++--- 1 file 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; } -- 2.39.5