Skip to content

urllib.request.url2pathname() mishandles non-empty authority sections on POSIX #126838

Closed as not planned
@barneygale

Description

@barneygale

Bug report

Bug description:

URLs supplied to urllib.request.url2pathname() may include a non-empty authority (netloc), such as a hostname.

On Windows, these are correctly decoded (mostly):

>>> url2pathname('//localhost/c:/foo.txt')
'C:\\foo.txt'  # OK
>>> url2pathname('//server/share')
'\\\\server\\share'  # OK

But on POSIX, any non-empty authority except localhost is preserved in the path:

>>> url2pathname('//myhostname/etc/hosts')
'//myhostname/etc/hosts'  # expected '/etc/hosts'
>>> url2pathname('//server/share')
'//server/share'  # expected URLError ('server' is not local)

Per RFC 8089 this isn't correct.

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.12only security fixes3.13bugs and security fixes3.14bugs and security fixesstdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions