Skip to content

Commit 1146b4c

Browse files
committed
use string builder
1 parent f5342b6 commit 1146b4c

File tree

1 file changed

+34
-11
lines changed

1 file changed

+34
-11
lines changed

java/test/org/openqa/selenium/environment/webserver/CookieHandler.java

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -191,21 +191,44 @@ private Cookie parse(String cookieString) {
191191

192192
return builder.build();
193193
}
194-
195194
private String escapeCookieValue(String value) {
196195
if (value == null || value.isEmpty()) {
197196
return "";
198197
}
199198

200-
return value
201-
.replace("\\", "\\\\")
202-
.replace("\"", "\\\"")
203-
.replace(";", "\\;")
204-
.replace(",", "\\,")
205-
.replace("\r", "")
206-
.replace("\n", "")
207-
.replace("<", "&lt;")
208-
.replace(">", "&gt;")
209-
.replace("&", "&amp;");
199+
StringBuilder cookieValue = new StringBuilder();
200+
201+
for (char c : value.toCharArray()) {
202+
switch (c) {
203+
case '\\':
204+
cookieValue.append("\\\\");
205+
break;
206+
case '"':
207+
cookieValue.append("\\\"");
208+
break;
209+
case ';':
210+
cookieValue.append("\\;");
211+
break;
212+
case ',':
213+
cookieValue.append("\\,");
214+
break;
215+
case '\r':
216+
case '\n':
217+
// Skip carriage return and newline characters
218+
break;
219+
case '<':
220+
cookieValue.append("&lt;");
221+
break;
222+
case '>':
223+
cookieValue.append("&gt;");
224+
break;
225+
case '&':
226+
cookieValue.append("&amp;");
227+
break;
228+
default:
229+
cookieValue.append(c); // Append safe characters as they are
230+
}
231+
}
232+
return cookieValue.toString();
210233
}
211234
}

0 commit comments

Comments
 (0)