Fix Issue9721 - urljoin behavior when the relative url starts with ';'

This commit is contained in:
Senthil Kumaran 2010-12-17 04:48:45 +00:00
parent b25a791802
commit dca5b86233
3 changed files with 7 additions and 7 deletions

View File

@ -327,6 +327,9 @@ class UrlParseTestCase(unittest.TestCase):
#self.checkJoin(RFC3986_BASE, 'http:g','http:g') # strict parser
self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') #relaxed parser
# Test for issue9721
self.checkJoin('http://a/b/c/de', ';x','http://a/b/c/;x')
def test_urljoins(self):
self.checkJoin(SIMPLE_BASE, 'g:h','g:h')
self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')

View File

@ -411,14 +411,9 @@ def urljoin(base, url, allow_fragments=True):
if path[:1] == '/':
return _coerce_result(urlunparse((scheme, netloc, path,
params, query, fragment)))
if not path:
if not path and not params:
path = bpath
if not params:
params = bparams
else:
path = path[:-1]
return _coerce_result(urlunparse((scheme, netloc, path,
params, query, fragment)))
params = bparams
if not query:
query = bquery
return _coerce_result(urlunparse((scheme, netloc, path,

View File

@ -19,6 +19,8 @@ Core and Builtins
Library
-------
- Issue #9721: Fix the behavior of urljoin when the relative url starts with a
';' character. Patch by Wes Chow.
- Issue #10714: Limit length of incoming request in http.server to 65536 bytes
for security reasons. Initial patch by Ross Lagerwall.