]> spindle.queued.net Git - midori/commitdiff
Skip empty lines in adblock rules files
authorAlexander Butenko <a.butenka@gmail.com>
Sat, 18 Jun 2011 13:45:20 +0000 (09:45 -0400)
committerChristian Dywan <christian@twotoasts.de>
Fri, 24 Jun 2011 19:20:08 +0000 (21:20 +0200)
extensions/adblock.c

index 82d16bd9eed10d6949411e7f020bb42f4d07ce86..72ef3001a538ef0dac11519ca4a76a1614b09f87 100644 (file)
@@ -1045,7 +1045,7 @@ adblock_fixup_regexp (const gchar* prefix,
 {
     gchar* dst;
     GString* str;
-    int len;
+    int len = 0;
 
     if (!src)
         return NULL;
@@ -1087,13 +1087,12 @@ adblock_fixup_regexp (const gchar* prefix,
             break;
         }
         src++;
+        len++;
     }
     while (*src);
 
-    dst = g_strdup (str->str);
-    g_string_free (str, TRUE);
+    dst = g_string_free (str, FALSE);
     /* We dont need .* in the end of url. Thats stupid */
-    len = strlen (dst);
     if (dst && dst[len-1] == '*' && dst[len-2] == '.')
     {
         dst[len-2] = '\0';
@@ -1112,6 +1111,9 @@ adblock_compile_regexp (GHashTable* tbl,
     int pos = 0;
     gchar *sig;
 
+    if (!patt)
+        return;
+
     /* TODO: Play with optimization flags */
     regex = g_regex_new (patt, G_REGEX_OPTIMIZE,
                          G_REGEX_MATCH_NOTEMPTY, &error);
@@ -1167,15 +1169,17 @@ adblock_add_url_pattern (gchar* prefix,
     gchar* format_patt;
     gchar* opts;
 
-    g_test_timer_start ();
     data = g_strsplit (line, "$", -1);
-    if (data && data[0] && data[1] && data[2])
+    if (!data || !data[0])
+        return NULL;
+
+    if (data[1] && data[2])
     {
         patt = g_strconcat (data[0], data[1], NULL);
         opts = g_strdup_printf ("t=%s,r=%s,%s", type, patt, data[2]);
         g_strfreev (data);
     }
-    else if (data && data[0] && data[1])
+    else if (data[1])
     {
         patt = data[0];
         opts = g_strdup_printf ("t=%s,r=%s,%s", type, patt, data[1]);
@@ -1268,6 +1272,10 @@ adblock_parse_line (gchar* line)
     if (line[0] == '[')
         return NULL;
 
+    /* Skip garbage */
+    if (line[0] == ' ' || !line[0])
+        return NULL;
+
     /* Got CSS block hider */
     if (line[0] == '#' && line[1] == '#' )
     {