]> spindle.queued.net Git - midori/commitdiff
Validate uri and title in completion in case of invalid UTF-8
authorChristian Dywan <christian@twotoasts.de>
Sat, 12 Dec 2009 16:40:30 +0000 (17:40 +0100)
committerChristian Dywan <christian@twotoasts.de>
Sat, 12 Dec 2009 17:04:48 +0000 (18:04 +0100)
midori/midori-locationaction.c

index d2617db3319431f4a5fc45cd13b99c3ebf2ce5aa..525882c93955591a0bea32cce78b0be398417daf 100644 (file)
@@ -664,7 +664,10 @@ midori_location_entry_render_text_cb (GtkCellLayout*   layout,
         : g_ascii_strdown (gtk_entry_get_text (GTK_ENTRY (entry)), -1);
     len = 0;
 
-    if (G_LIKELY (uri))
+    /* g_uri_unescape_segment () sometimes produces garbage */
+    if (G_UNLIKELY (uri && !g_utf8_validate (uri, -1, (const gchar **)&temp)))
+        temp[0]='\0';
+    else if (G_LIKELY (uri))
     {
         temp = g_utf8_strdown (uri, -1);
         if (key && *key && (start = strstr (temp, key)))
@@ -685,7 +688,11 @@ midori_location_entry_render_text_cb (GtkCellLayout*   layout,
     }
     if (uri && !desc_uri)
         desc_uri = g_markup_escape_text (uri, -1);
-    if (G_LIKELY (title))
+
+    /* g_uri_unescape_segment () sometimes produces garbage */
+    if (G_UNLIKELY (title && !g_utf8_validate (title, -1, (const gchar **)&temp)))
+        temp[0]='\0';
+    else if (G_LIKELY (title))
     {
         temp = g_utf8_strdown (title, -1);
         if (key && *key && (start = strstr (temp, key)))