Make FilterImpl.toString() add escape characters where needed (FELIX-471).
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@615079 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java b/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java
index 86122b3..46ff157 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/ldap/Parser.java
@@ -1044,7 +1044,7 @@
public void toStringInfix(StringBuffer b)
{
- b.append(val.toString());
+ appendEscaped(b, val.toString());
}
}
@@ -1195,12 +1195,12 @@
b.append("=");
for (int i = 0; i < pieces.length; i++)
{
- String piece = (String) pieces[i];
+ String piece = pieces[i];
if (i > 0)
{
b.append("*");
}
- b.append(piece);
+ appendEscaped(b, piece);
}
b.append(")");
}
@@ -1374,6 +1374,19 @@
return false;
}
+ private static void appendEscaped(StringBuffer buf, String value)
+ {
+ for (int i = 0; i < value.length(); i++)
+ {
+ char c = value.charAt(i);
+ if (c == '(' || c == ')' || c == '*' || c == '\\')
+ {
+ buf.append('\\');
+ }
+ buf.append(c);
+ }
+ }
+
/**
* This is an ugly utility method to convert an array of primitives
* to an array of primitive wrapper objects. This method simplifies