mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
rewrite: better fix for multiple ../ in urls, additional tests
This commit is contained in:
parent
7032160cf9
commit
e858b8faae
@ -89,6 +89,9 @@ r"""
|
|||||||
>>> _test_css("background:#abc url('/static/styles/../images/layout/logo.png')")
|
>>> _test_css("background:#abc url('/static/styles/../images/layout/logo.png')")
|
||||||
"background:#abc url('/web/20131010em_/http://example.com/static/images/layout/logo.png')"
|
"background:#abc url('/web/20131010em_/http://example.com/static/images/layout/logo.png')"
|
||||||
|
|
||||||
|
>>> _test_css("background:#000 url('/static/styles/../../images/layout/logo.png')")
|
||||||
|
"background:#000 url('/web/20131010em_/http://example.com/images/layout/logo.png')"
|
||||||
|
|
||||||
>>> _test_css("background: url('')")
|
>>> _test_css("background: url('')")
|
||||||
"background: url('')"
|
"background: url('')"
|
||||||
|
|
||||||
|
@ -1,4 +1,21 @@
|
|||||||
"""
|
"""
|
||||||
|
# urljoin tests
|
||||||
|
|
||||||
|
>>> UrlRewriter.urljoin('http://example.com/test/', '../file.html')
|
||||||
|
'http://example.com/file.html'
|
||||||
|
|
||||||
|
>>> UrlRewriter.urljoin('http://example.com/test/', '../path/../../../file.html')
|
||||||
|
'http://example.com/file.html'
|
||||||
|
|
||||||
|
>>> UrlRewriter.urljoin('http://example.com/test/', '/../file.html')
|
||||||
|
'http://example.com/file.html'
|
||||||
|
|
||||||
|
>>> UrlRewriter.urljoin('http://example.com/', '/abc/../../file.html')
|
||||||
|
'http://example.com/file.html'
|
||||||
|
|
||||||
|
>>> UrlRewriter.urljoin('http://example.com/path/more/', 'abc/../../file.html')
|
||||||
|
'http://example.com/path/file.html'
|
||||||
|
|
||||||
# UrlRewriter tests
|
# UrlRewriter tests
|
||||||
>>> do_rewrite('other.html', '20131010/http://example.com/path/page.html', 'https://web.archive.org/web/')
|
>>> do_rewrite('other.html', '20131010/http://example.com/path/page.html', 'https://web.archive.org/web/')
|
||||||
'https://web.archive.org/web/20131010/http://example.com/path/other.html'
|
'https://web.archive.org/web/20131010/http://example.com/path/other.html'
|
||||||
|
@ -102,14 +102,18 @@ class UrlRewriter(object):
|
|||||||
scheme, netloc, path, query, frag = parts
|
scheme, netloc, path, query, frag = parts
|
||||||
|
|
||||||
path_parts = path.split('/')
|
path_parts = path.split('/')
|
||||||
i = len(path_parts) - 1
|
i = 0
|
||||||
while i >= 0:
|
n = len(path_parts) - 1
|
||||||
|
while i < n:
|
||||||
if path_parts[i] == '..':
|
if path_parts[i] == '..':
|
||||||
del path_parts[i]
|
del path_parts[i]
|
||||||
|
n -= 1
|
||||||
if i > 0:
|
if i > 0:
|
||||||
del path_parts[i - 1]
|
del path_parts[i - 1]
|
||||||
|
n -= 1
|
||||||
i -= 1
|
i -= 1
|
||||||
i -= 1
|
else:
|
||||||
|
i += 1
|
||||||
|
|
||||||
if path_parts == ['']:
|
if path_parts == ['']:
|
||||||
path = '/'
|
path = '/'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user