Lines 135-140
Link Here
|
135 |
|
135 |
|
136 |
private static final String tspecials = ",; "; |
136 |
private static final String tspecials = ",; "; |
137 |
private static final String tspecials2 = "()<>@,;:\\\"/[]?={} \t"; |
137 |
private static final String tspecials2 = "()<>@,;:\\\"/[]?={} \t"; |
|
|
138 |
private static final String tspecials2NoSlash = "()<>@,;:\\\"[]?={} \t"; |
138 |
|
139 |
|
139 |
/* |
140 |
/* |
140 |
* Tests a string and returns true if the string counts as a |
141 |
* Tests a string and returns true if the string counts as a |
Lines 146-151
Link Here
|
146 |
* token; <code>false</code> if it is not |
147 |
* token; <code>false</code> if it is not |
147 |
*/ |
148 |
*/ |
148 |
public static boolean isToken(String value) { |
149 |
public static boolean isToken(String value) { |
|
|
150 |
return isToken(value,null); |
151 |
} |
152 |
|
153 |
public static boolean isToken(String value, String literals) { |
154 |
String tspecials = (literals==null?ServerCookie.tspecials:literals); |
149 |
if( value==null) return true; |
155 |
if( value==null) return true; |
150 |
int len = value.length(); |
156 |
int len = value.length(); |
151 |
|
157 |
|
Lines 172-179
Link Here
|
172 |
return false; |
178 |
return false; |
173 |
} |
179 |
} |
174 |
|
180 |
|
|
|
181 |
public static boolean isToken2(String value) { |
182 |
return isToken2(value,null); |
183 |
} |
175 |
|
184 |
|
176 |
public static boolean isToken2(String value) { |
185 |
public static boolean isToken2(String value, String literals) { |
|
|
186 |
String tspecials2 = (literals==null?ServerCookie.tspecials2:literals); |
177 |
if( value==null) return true; |
187 |
if( value==null) return true; |
178 |
int len = value.length(); |
188 |
int len = value.length(); |
179 |
|
189 |
|
Lines 299-305
Link Here
|
299 |
// Path=path |
309 |
// Path=path |
300 |
if (path!=null) { |
310 |
if (path!=null) { |
301 |
buf.append ("; Path="); |
311 |
buf.append ("; Path="); |
302 |
maybeQuote2(version, buf, path); |
312 |
if (version==0) { |
|
|
313 |
maybeQuote2(version, buf, path); |
314 |
} else { |
315 |
maybeQuote2(version, buf, path, ServerCookie.tspecials2NoSlash, false); |
316 |
} |
303 |
} |
317 |
} |
304 |
|
318 |
|
305 |
// Secure |
319 |
// Secure |
Lines 341-346
Link Here
|
341 |
} |
355 |
} |
342 |
|
356 |
|
343 |
public static int maybeQuote2 (int version, StringBuffer buf, String value, boolean allowVersionSwitch) { |
357 |
public static int maybeQuote2 (int version, StringBuffer buf, String value, boolean allowVersionSwitch) { |
|
|
358 |
return maybeQuote2(version,buf,value,null,allowVersionSwitch); |
359 |
} |
360 |
|
361 |
public static int maybeQuote2 (int version, StringBuffer buf, String value, String literals, boolean allowVersionSwitch) { |
344 |
if (value==null || value.length()==0) { |
362 |
if (value==null || value.length()==0) { |
345 |
buf.append("\"\""); |
363 |
buf.append("\"\""); |
346 |
}else if (containsCTL(value,version)) |
364 |
}else if (containsCTL(value,version)) |
Lines 349-364
Link Here
|
349 |
buf.append('"'); |
367 |
buf.append('"'); |
350 |
buf.append(escapeDoubleQuotes(value,1,value.length()-1)); |
368 |
buf.append(escapeDoubleQuotes(value,1,value.length()-1)); |
351 |
buf.append('"'); |
369 |
buf.append('"'); |
352 |
} else if (allowVersionSwitch && (!STRICT_SERVLET_COMPLIANCE) && version==0 && !isToken2(value)) { |
370 |
} else if (allowVersionSwitch && (!STRICT_SERVLET_COMPLIANCE) && version==0 && !isToken2(value, literals)) { |
353 |
buf.append('"'); |
371 |
buf.append('"'); |
354 |
buf.append(escapeDoubleQuotes(value,0,value.length())); |
372 |
buf.append(escapeDoubleQuotes(value,0,value.length())); |
355 |
buf.append('"'); |
373 |
buf.append('"'); |
356 |
version = 1; |
374 |
version = 1; |
357 |
} else if (version==0 && !isToken(value)) { |
375 |
} else if (version==0 && !isToken(value,literals)) { |
358 |
buf.append('"'); |
376 |
buf.append('"'); |
359 |
buf.append(escapeDoubleQuotes(value,0,value.length())); |
377 |
buf.append(escapeDoubleQuotes(value,0,value.length())); |
360 |
buf.append('"'); |
378 |
buf.append('"'); |
361 |
} else if (version==1 && !isToken2(value)) { |
379 |
} else if (version==1 && !isToken2(value,literals)) { |
362 |
buf.append('"'); |
380 |
buf.append('"'); |
363 |
buf.append(escapeDoubleQuotes(value,0,value.length())); |
381 |
buf.append(escapeDoubleQuotes(value,0,value.length())); |
364 |
buf.append('"'); |
382 |
buf.append('"'); |