diff options
author | Barney Gale <barney.gale@gmail.com> | 2024-11-14 20:22:14 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-14 20:22:14 (GMT) |
commit | cae9d9d20f61cdbde0765efa340b6b596c31b67f (patch) | |
tree | 72fd81537fbe2b3989fbaf3f952ad8c65da7d0f7 /Lib/urllib | |
parent | 47cbf038850852cdcbe7a404ed7c64542340d58a (diff) | |
download | cpython-cae9d9d20f61cdbde0765efa340b6b596c31b67f.zip cpython-cae9d9d20f61cdbde0765efa340b6b596c31b67f.tar.gz cpython-cae9d9d20f61cdbde0765efa340b6b596c31b67f.tar.bz2 |
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`.
Diffstat (limited to 'Lib/urllib')
-rw-r--r-- | Lib/urllib/request.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index bc35d8a..18a837d 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -1656,6 +1656,10 @@ else: def url2pathname(pathname): """OS-specific conversion from a relative URL of the 'file' scheme to a file system path; not recommended for general use.""" + if pathname[:3] == '///': + # URL has an empty authority section, so the path begins on the + # third character. + pathname = pathname[2:] return unquote(pathname) def pathname2url(pathname): |