
Untitled
By: a guest on
Jun 17th, 2012 | syntax:
None | size: 1.53 KB | hits: 20 | expires: Never
diff --git a/java/org/apache/tomcat/util/http/Cookies.java b/java/org/apache/tomcat/util/http/Cookies.java
index fda0adf..77a673b 100644
--- a/java/org/apache/tomcat/util/http/Cookies.java
+++ b/java/org/apache/tomcat/util/http/Cookies.java
@@ -51,7 +51,8 @@ public final class Cookies { // extends MultiMap {
* being quoted.
*/
public static final boolean ALLOW_EQUALS_IN_VALUE;
-
+
+ public static final boolean ALLOW_SPECIAL_CHARS_IN_VALUE;
/*
List of Separator Characters (see isSeparator())
Excluding the '/' char violates the RFC, but
@@ -75,6 +76,9 @@ public final class Cookies { // extends MultiMap {
ALLOW_EQUALS_IN_VALUE = Boolean.valueOf(System.getProperty(
"org.apache.tomcat.util.http.ServerCookie.ALLOW_EQUALS_IN_VALUE",
"false")).booleanValue();
+ ALLOW_SPECIAL_CHARS_IN_VALUE = Boolean.valueOf(System.getProperty(
+ "org.forgerock.tomcat.util.http.ServerCookie.ALLOW_SPECIAL_CHARS_IN_VALUE",
+ "false")).booleanValue();
}
/**
@@ -580,7 +584,9 @@ public final class Cookies { // extends MultiMap {
int pos = off;
while (pos < end &&
(!isSeparator(bytes[pos]) ||
- bytes[pos]=='=' && ALLOW_EQUALS_IN_VALUE && !isName)) {
+ (((ALLOW_EQUALS_IN_VALUE && bytes[pos]=='=')
+ || (ALLOW_SPECIAL_CHARS_IN_VALUE && bytes[pos]=='@'))
+ && !isName))) {
pos++;
}