X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Futil%2FPublicSuffixes.java;h=51c2edf2acb53a90a22a0021729dd08c73a63d9f;hb=338596d73de4dfcac1a1c83fbc30af10e43a7666;hp=9fd2217b2ecd89f4b67891762eab1c0b34a6fb95;hpb=30d4d39245698b9257a6ce6810f55273a3ec25ef;p=gigi.git 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("!")) {