]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix parsing of URLs with displayed UTF characters
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 25 Feb 2019 12:48:18 +0000 (12:48 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 25 Feb 2019 12:48:18 +0000 (12:48 +0000)
src/libserver/url.c

index 4e1b9f3d243ac7075be574a88ad56e44131df709..13c324e7ae7659b8e697828f59668f04af3d54b2 100644 (file)
@@ -1021,11 +1021,13 @@ rspamd_web_parse (struct http_parser_url *u, const gchar *str, gsize len,
                                                                        (*flags) |= RSPAMD_URL_FLAG_OBSCURED;
                                                                }
                                                                else {
-                                                                       if (!(parse_flags & RSPAMD_URL_PARSE_CHECK)) {
-                                                                               goto out;
-                                                                       }
-                                                                       else {
-                                                                               goto set;
+                                                                       if (!u_isgraph (uc)) {
+                                                                               if (!(parse_flags & RSPAMD_URL_PARSE_CHECK)) {
+                                                                                       goto out;
+                                                                               }
+                                                                               else {
+                                                                                       goto set;
+                                                                               }
                                                                        }
                                                                }
                                                        }
@@ -3284,10 +3286,11 @@ rspamd_url_encode (struct rspamd_url *url, gsize *pdlen,
        d = dest;
        dend = d + dlen;
 
-       if (url->protocollen > 0 &&
-               (url->protocol >= 0 && url->protocol < G_N_ELEMENTS (rspamd_url_protocols))) {
+       if (url->protocollen > 0) {
                d += rspamd_snprintf ((gchar *) d, dend - d,
-                               "%*s://", url->protocollen, rspamd_url_protocols[url->protocol].name);
+                               "%*s://",
+                               url->protocollen,
+                               rspamd_url_protocol_name (url->protocol));
        }
        else {
                d += rspamd_snprintf ((gchar *) d, dend - d, "http://");