]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] More fixes for URLs with backslashes
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 24 Nov 2016 14:07:11 +0000 (14:07 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 24 Nov 2016 14:07:11 +0000 (14:07 +0000)
src/libserver/url.c

index 1afde3b6bc8b48152c96aa7ae984af99df9633ee..f4f07d4bde35fdf87f3bae854fc8322463d07765 100644 (file)
@@ -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;
                                }