]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-117566: fix IPv6Address.is_loopback for IPv4-mapped loopbacks (GH-117567)
authorFaidon Liambotis <paravoid@debian.org>
Thu, 25 Apr 2024 15:17:40 +0000 (18:17 +0300)
committerGitHub <noreply@github.com>
Thu, 25 Apr 2024 15:17:40 +0000 (15:17 +0000)
commitfb7f79b4da35b75cdc82ff3cf20816d2bf93d416
treeae468509ee068193e62ebcbf9df92f019d1377a0
parenteb20a7d12c4b2ab7931074843f8602a48b5b07bd
gh-117566: fix IPv6Address.is_loopback for IPv4-mapped loopbacks (GH-117567)

While properties like IPv6Address.is_private account for IPv4-mapped
IPv6 addresses, such as for example:

    >>> ipaddress.ip_address("192.168.0.1").is_private
    True
    >>> ipaddress.ip_address("::ffff:192.168.0.1").is_private
    True
...the same doesn't currently apply to the is_loopback property:
    >>> ipaddress.ip_address("127.0.0.1").is_loopback
    True
    >>> ipaddress.ip_address("::ffff:127.0.0.1").is_loopback
    False

At minimum, this inconsistency between different properties is
counter-intuitive. Moreover, ::ffff:127.0.0.0/104 is for all intents and
purposes a loopback address, and should be treated as such.
Lib/ipaddress.py
Lib/test/test_ipaddress.py
Misc/NEWS.d/next/Library/2024-04-05-15-51-01.gh-issue-117566.54nABf.rst [new file with mode: 0644]