diff --git a/htroot/BlacklistCleaner_p.html b/htroot/BlacklistCleaner_p.html
index bc137e0c1..7a2acc5c2 100644
--- a/htroot/BlacklistCleaner_p.html
+++ b/htroot/BlacklistCleaner_p.html
@@ -35,7 +35,9 @@
#{entries}#
-
-
+
diff --git a/htroot/BlacklistCleaner_p.java b/htroot/BlacklistCleaner_p.java
index 941841e92..99617dedd 100644
--- a/htroot/BlacklistCleaner_p.java
+++ b/htroot/BlacklistCleaner_p.java
@@ -73,6 +73,8 @@ public class BlacklistCleaner_p {
private static final int ERR_TWO_WILDCARDS_IN_HOST = 0;
private static final int ERR_SUBDOMAIN_XOR_WILDCARD = 1;
private static final int ERR_PATH_REGEX = 2;
+ private static final int ERR_WILDCARD_BEGIN_OR_END = 3;
+ private static final int ERR_HOST_WRONG_CHARS = 4;
public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) {
serverObjects prop = new serverObjects();
@@ -123,7 +125,7 @@ public class BlacklistCleaner_p {
String s;
while (it.hasNext()) {
s = (String)it.next();
- prop.put(RESULTS + DISABLED + ENTRIES + i + "_error", ((Integer)ies.get(s)).intValue());
+ prop.put(RESULTS + DISABLED + ENTRIES + i + "_error", ((Integer)ies.get(s)).longValue());
prop.putSafeXML(RESULTS + DISABLED + ENTRIES + i + "_entry", s);
i++;
}
@@ -177,18 +179,29 @@ public class BlacklistCleaner_p {
}
int i = host.indexOf("*");
+
+ // check whether host begins illegally
+ if (!host.matches("([A-Za-z0-9_-]+|\\*)(\\.([A-Za-z0-9_-]+|\\*))*")) {
+ if (i == 0 && host.length() > 1 && host.charAt(1) != '.') {
+ r.put(s, new Integer(ERR_SUBDOMAIN_XOR_WILDCARD));
+ continue;
+ } else {
+ r.put(s, new Integer(ERR_HOST_WRONG_CHARS));
+ continue;
+ }
+ }
+
// in host-part only full sub-domains may be wildcards
if (host.length() > 0 && i > -1) {
- if (host.length() > i + 1)
- if (host.charAt(i + 1) != '.') {
- r.put(s, Integer.valueOf(ERR_SUBDOMAIN_XOR_WILDCARD));
- continue;
- }
- if (i > 0)
- if (host.charAt(i - 1) != '.') {
- r.put(s, Integer.valueOf(ERR_SUBDOMAIN_XOR_WILDCARD));
- continue;
- }
+ if (!(i == 0 || i == host.length() - 1)) {
+ r.put(s, new Integer(ERR_WILDCARD_BEGIN_OR_END));
+ continue;
+ }
+
+ if (i == host.length() - 1 && host.length() > 1 && host.charAt(i - 1) != '.') {
+ r.put(s, new Integer(ERR_SUBDOMAIN_XOR_WILDCARD));
+ continue;
+ }
}
// check for double-occurences of "*" in host