Fix regex filter issues

Escape }
Do not crash on a single quote, at least two chars required for an exact pattern

Closes #101
multisite
Floens 10 years ago
parent f007117aec
commit 2c33a17b0f
  1. 4
      Clover/app/src/main/java/org/floens/chan/core/manager/FilterEngine.java

@ -198,7 +198,7 @@ public class FilterEngine {
} }
private static final Pattern isRegexPattern = Pattern.compile("^/(.*)/(i?)$"); private static final Pattern isRegexPattern = Pattern.compile("^/(.*)/(i?)$");
private static final Pattern filterFilthyPattern = Pattern.compile("(\\.|\\^|\\$|\\*|\\+|\\?|\\(|\\)|\\[|\\]|\\{|\\\\|\\||\\-)"); private static final Pattern filterFilthyPattern = Pattern.compile("(\\.|\\^|\\$|\\*|\\+|\\?|\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\||\\-)");
private static final Pattern wildcardPattern = Pattern.compile("\\\\\\*"); // an escaped \ and an escaped *, to replace an escaped * from escapeRegex private static final Pattern wildcardPattern = Pattern.compile("\\\\\\*"); // an escaped \ and an escaped *, to replace an escaped * from escapeRegex
public Pattern compile(String rawPattern) { public Pattern compile(String rawPattern) {
@ -222,7 +222,7 @@ public class FilterEngine {
} catch (PatternSyntaxException e) { } catch (PatternSyntaxException e) {
return null; return null;
} }
} else if (rawPattern.charAt(0) == '"' && rawPattern.charAt(rawPattern.length() - 1) == '"') { } else if (rawPattern.length() >= 2 && rawPattern.charAt(0) == '"' && rawPattern.charAt(rawPattern.length() - 1) == '"') {
// "matches an exact sentence" // "matches an exact sentence"
pattern = Pattern.compile(escapeRegex(rawPattern).substring(1, rawPattern.length() - 1)); pattern = Pattern.compile(escapeRegex(rawPattern).substring(1, rawPattern.length() - 1));
} else { } else {

Loading…
Cancel
Save