From: Felix Dörre Date: Sun, 9 Nov 2014 09:50:03 +0000 (+0100) Subject: fix: cleanup public suffix list-initailizing. X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=01c59c39c129e5842ae6353b0585737bfa5a551d fix: cleanup public suffix list-initailizing. --- diff --git a/src/org/cacert/gigi/util/PublicSuffixes.java b/src/org/cacert/gigi/util/PublicSuffixes.java index 9fd2217b..51c2edf2 100644 --- a/src/org/cacert/gigi/util/PublicSuffixes.java +++ b/src/org/cacert/gigi/util/PublicSuffixes.java @@ -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("!")) { diff --git a/tests/org/cacert/gigi/util/TestPublicSuffixes.java b/tests/org/cacert/gigi/util/TestPublicSuffixes.java index 3274ab66..98c3e112 100644 --- a/tests/org/cacert/gigi/util/TestPublicSuffixes.java +++ b/tests/org/cacert/gigi/util/TestPublicSuffixes.java @@ -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");