]> WPIA git - gigi.git/commitdiff
fix: cleanup public suffix list-initailizing.
authorFelix Dörre <felix@dogcraft.de>
Sun, 9 Nov 2014 09:50:03 +0000 (10:50 +0100)
committerJanis Streib <janis@dogcraft.de>
Wed, 31 Dec 2014 01:36:06 +0000 (02:36 +0100)
src/org/cacert/gigi/util/PublicSuffixes.java
tests/org/cacert/gigi/util/TestPublicSuffixes.java

index 9fd2217b2ecd89f4b67891762eab1c0b34a6fb95..51c2edf2acb53a90a22a0021729dd08c73a63d9f 100644 (file)
@@ -18,16 +18,16 @@ public class PublicSuffixes {
 
     private static PublicSuffixes instance;
 
-    private static void generateDefault() throws IOException {
+    private static PublicSuffixes generateDefault() throws IOException {
         try (BufferedReader br = new BufferedReader(new InputStreamReader(PublicSuffixes.class.getResourceAsStream("effective_tld_names.dat"), "UTF-8"))) {
-            instance = new PublicSuffixes(br);
+            return new PublicSuffixes(br);
         }
     }
 
-    public static PublicSuffixes getInstance() {
+    public synchronized static PublicSuffixes getInstance() {
         if (instance == null) {
             try {
-                generateDefault();
+                instance = generateDefault();
             } catch (IOException e) {
                 throw new Error(e);
             }
@@ -44,7 +44,11 @@ public class PublicSuffixes {
             if (line.isEmpty()) {
                 continue;
             }
-            line = line.split("\\s", 2)[0];
+            String[] lineParts = line.split("\\s", 2);
+            if (lineParts.length == 0) {
+                throw new Error("split had strange behavior");
+            }
+            line = lineParts[0];
             if (line.startsWith("*.")) {
                 String data = line.substring(2);
                 if (data.contains("*") || data.contains("!")) {
index 3274ab6624ec227787582468e7ba22bb2fc1f47c..98c3e112fcaec29630ce86d17eb8bbdded2a9b02 100644 (file)
@@ -37,10 +37,10 @@ public class TestPublicSuffixes {
          * checkPublicSuffix("a.b.example.example", "example.example");
          */
         // Listed, but non-Internet, TLD.
-        // checkPublicSuffix("local", null);
-        // checkPublicSuffix("example.local", null);
-        // checkPublicSuffix("b.example.local", null);
-        // checkPublicSuffix("a.b.example.local", null);
+        checkPublicSuffix("local", null);
+        checkPublicSuffix("example.local", null);
+        checkPublicSuffix("b.example.local", null);
+        checkPublicSuffix("a.b.example.local", null);
         // TLD with only 1 rule.
         checkPublicSuffix("biz", null);
         checkPublicSuffix("domain.biz", "domain.biz");