aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/net/cookie.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/components/net/cookie.rs b/components/net/cookie.rs
index c0f6b1645f6..b496eb7256e 100644
--- a/components/net/cookie.rs
+++ b/components/net/cookie.rs
@@ -113,10 +113,21 @@ impl Cookie {
// http://tools.ietf.org/html/rfc6265#section-5.1.4
pub fn path_match(request_path: &str, cookie_path: &str) -> bool {
+ // A request-path path-matches a given cookie-path if at least one of
+ // the following conditions holds:
+
+ // The cookie-path and the request-path are identical.
request_path == cookie_path ||
- ( request_path.starts_with(cookie_path) &&
- ( request_path.ends_with("/") || request_path[cookie_path.len()..].starts_with("/"))
- )
+
+ (request_path.starts_with(cookie_path) && (
+ // The cookie-path is a prefix of the request-path, and the last
+ // character of the cookie-path is %x2F ("/").
+ cookie_path.ends_with("/") ||
+ // The cookie-path is a prefix of the request-path, and the first
+ // character of the request-path that is not included in the cookie-
+ // path is a %x2F ("/") character.
+ request_path[cookie_path.len()..].starts_with("/")
+ ))
}
// http://tools.ietf.org/html/rfc6265#section-5.1.3