Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,9 @@ private Collection<Cookie> getCookies(HttpRequest request) {
private void addCookie(HttpResponse response, Cookie cook) {
StringBuilder cookie = new StringBuilder();

// TODO: escape string as necessary
String name = cook.getName();
cookie.append(name).append("=").append(cook.getValue()).append("; ");
String name = escapeCookieValue(cook.getName());
String value = escapeCookieValue(cook.getValue());
cookie.append(name).append("=").append(value).append("; ");

append(cookie, cook.getDomain(), str -> "Domain=" + str);
append(cookie, cook.getPath(), str -> "Path=" + str);
Expand Down Expand Up @@ -191,4 +191,16 @@ private Cookie parse(String cookieString) {

return builder.build();
}
private String escapeCookieValue(String value) {
if (value == null) {
return "";
}

return value.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace(";", "\\;")
.replace(",", "\\,")
.replace("\r", "")
.replace("\n", "");
}
}