]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Fix parsing of multiple slashes in URL.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 1 Jul 2015 15:34:14 +0000 (16:34 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 1 Jul 2015 15:34:14 +0000 (16:34 +0100)
src/libserver/url.c

index 5eccdebaef4cd947e9e2c8748035fa08596678a4..2de64cb3333dcd082a01b31db6b9eddb1efefd01 100644 (file)
@@ -451,10 +451,14 @@ rspamd_mailto_parse (struct http_parser_url *u, const gchar *str, gsize len,
                                st = parse_prefix_question;
                                p ++;
                        }
-                       else {
+                       else if (t != '/') {
                                c = p;
                                st = parse_user;
                        }
+                       else {
+                               /* Skip multiple slashes */
+                               p ++;
+                       }
                        break;
                case parse_prefix_question:
                        if (t == 't') {
@@ -608,14 +612,21 @@ rspamd_web_parse (struct http_parser_url *u, const gchar *str, gsize len,
                        p ++;
                        break;
                case parse_slash_slash:
-                       c = p;
-                       st = parse_domain;
-                       slash = p;
 
-                       if (*p == '[') {
-                               st = parse_ipv6;
-                               p ++;
+                       if (t != '/') {
                                c = p;
+                               st = parse_domain;
+                               slash = p;
+
+                               if (*p == '[') {
+                                       st = parse_ipv6;
+                                       p ++;
+                                       c = p;
+                               }
+                       }
+                       else {
+                               /* Skip multiple slashes */
+                               p ++;
                        }
                        break;
                case parse_ipv6: