Browse Source

Relax domain name checks in ResponseCookie

Closes gh-23924
pull/23949/head
Rossen Stoyanchev 6 years ago
parent
commit
3a241b546f
  1. 2
      spring-web/src/main/java/org/springframework/http/ResponseCookie.java
  2. 15
      spring-web/src/test/java/org/springframework/http/ResponseCookieTests.java

2
spring-web/src/main/java/org/springframework/http/ResponseCookie.java

@ -374,7 +374,7 @@ public final class ResponseCookie extends HttpCookie { @@ -374,7 +374,7 @@ public final class ResponseCookie extends HttpCookie {
}
int char1 = domain.charAt(0);
int charN = domain.charAt(domain.length() - 1);
if (char1 == '.' || char1 == '-' || charN == '.' || charN == '-') {
if (char1 == '-' || charN == '.' || charN == '-') {
throw new IllegalArgumentException("Invalid first/last char in cookie domain: " + domain);
}
for (int i = 0, c = -1; i < domain.length(); i++) {

15
spring-web/src/test/java/org/springframework/http/ResponseCookieTests.java

@ -66,4 +66,19 @@ public class ResponseCookieTests { @@ -66,4 +66,19 @@ public class ResponseCookieTests {
.hasMessageContaining("RFC2616 cookie value"));
}
@Test
public void domainChecks() {
Arrays.asList("abc", "abc.org", "abc-def.org", "abc3.org", ".abc.org")
.forEach(domain -> ResponseCookie.from("n", "v").domain(domain).build());
Arrays.asList("-abc.org", "abc.org.", "abc.org-", "-abc.org", "abc.org-")
.forEach(domain -> assertThatThrownBy(() -> ResponseCookie.from("n", "v").domain(domain).build())
.hasMessageContaining("Invalid first/last char"));
Arrays.asList("abc..org", "abc.-org", "abc-.org")
.forEach(domain -> assertThatThrownBy(() -> ResponseCookie.from("n", "v").domain(domain).build())
.hasMessageContaining("invalid cookie domain char"));
}
}

Loading…
Cancel
Save