summaryrefslogtreecommitdiffstats
path: root/Lib/http
diff options
context:
space:
mode:
authorXtreak <tir.karthi@gmail.com>2019-03-10 17:12:28 (GMT)
committerSenthil Kumaran <skumaran@gatech.edu>2019-03-10 17:12:28 (GMT)
commit0e1f1f01058bd4a9b98cfe443214adecc019a38c (patch)
treeee5abf47d4caaad17e3f936d75a075dc568915f3 /Lib/http
parent1aeeaeb79efa4de41f97b58547e23c2965ecabc5 (diff)
downloadcpython-0e1f1f01058bd4a9b98cfe443214adecc019a38c.zip
cpython-0e1f1f01058bd4a9b98cfe443214adecc019a38c.tar.gz
cpython-0e1f1f01058bd4a9b98cfe443214adecc019a38c.tar.bz2
bpo-35647: Fix path check in cookiejar (#11436)
* Refactor cookie path check as per RFC 6265 * Add tests for prefix match of path * Add news entry * Fix set_ok_path and refactor tests * Use slice for last letter
Diffstat (limited to 'Lib/http')
-rw-r--r--Lib/http/cookiejar.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/Lib/http/cookiejar.py b/Lib/http/cookiejar.py
index 3a96383..db82382 100644
--- a/Lib/http/cookiejar.py
+++ b/Lib/http/cookiejar.py
@@ -993,7 +993,7 @@ class DefaultCookiePolicy(CookiePolicy):
req_path = request_path(request)
if ((cookie.version > 0 or
(cookie.version == 0 and self.strict_ns_set_path)) and
- not req_path.startswith(cookie.path)):
+ not self.path_return_ok(cookie.path, request)):
_debug(" path attribute %s is not a prefix of request "
"path %s", cookie.path, req_path)
return False
@@ -1200,11 +1200,15 @@ class DefaultCookiePolicy(CookiePolicy):
def path_return_ok(self, path, request):
_debug("- checking cookie path=%s", path)
req_path = request_path(request)
- if not req_path.startswith(path):
- _debug(" %s does not path-match %s", req_path, path)
- return False
- return True
+ pathlen = len(path)
+ if req_path == path:
+ return True
+ elif (req_path.startswith(path) and
+ (path.endswith("/") or req_path[pathlen:pathlen+1] == "/")):
+ return True
+ _debug(" %s does not path-match %s", req_path, path)
+ return False
def vals_sorted_by_key(adict):
keys = sorted(adict.keys())