GH-126766: url2pathname(): handle empty authority section. (#126767)

Discard two leading slashes from the beginning of a `file:` URI if they
introduce an empty authority section. As a result, file URIs like
`///etc/hosts` are correctly parsed as `/etc/hosts`.
This commit is contained in:
Barney Gale 2024-11-14 20:22:14 +00:00 committed by GitHub
parent 47cbf03885
commit cae9d9d20f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 14 additions and 9 deletions

View file

@ -19,10 +19,9 @@ def url2pathname(url):
url = url.replace(':', '|')
if not '|' in url:
# No drive specifier, just convert slashes
if url[:4] == '////':
# path is something like ////host/path/on/remote/host
# convert this to \\host\path\on\remote\host
# (notice halving of slashes at the start of the path)
if url[:3] == '///':
# URL has an empty authority section, so the path begins on the
# third character.
url = url[2:]
# make sure not to convert quoted slashes :-)
return urllib.parse.unquote(url.replace('/', '\\'))