GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-117566: fix IPv6Address.is_loopback for IPv4-mapped loopbacks by paravoid · Pull Request #117567 · python/cpython

Conversation

@paravoid

@paravoid paravoid commented Apr 5, 2024 •
edited by bedevere-app Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

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.

  • Issue: ipaddress.IPv6Address.is_loopback broken for IPv4-mapped addresses #117566

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ghost

ghost commented Apr 5, 2024 •
edited by ghost
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

All commit authors signed the Contributor License Agreement.
CLA signed

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot mentioned this pull request Apr 5, 2024
ipaddress.IPv6Address.is_loopback broken for IPv4-mapped addresses #117566
Closed
@bedevere-app

bedevere-app Bot commented Apr 5, 2024

Copy link
Copy Markdown

Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool.

If this change has little impact on Python users, wait for a maintainer to apply the skip news label instead.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot added the awaiting review label Apr 5, 2024
@paravoid
paravoid force-pushed the ipv4-mapped-loopback branch from d0967df to e07c72b Compare April 5, 2024 12:51
@paravoid

paravoid commented Apr 23, 2024

Copy link
Copy Markdown
Contributor Author

@encukou @gpshead, I noticed that you've reviewed this area of code before, and hopefully this is going to be a trivial one for you :) (Apologies beforehand if the direct ping is undesired/spammy, not sure about the etiquette here!)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@encukou

encukou commented Apr 23, 2024

Copy link
Copy Markdown
Member

Thanks for the fix.
Could you add a simple test as well?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@paravoid
pythongh-117566: fix IPv6Address.is_loopback for IPv4-mapped loopbacks
35c5efb
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.
@paravoid
paravoid force-pushed the ipv4-mapped-loopback branch from e07c72b to 35c5efb Compare April 25, 2024 11:15
@paravoid

paravoid commented Apr 25, 2024

Copy link
Copy Markdown
Contributor Author

Thanks for the fix. Could you add a simple test as well?

Thanks for the quick review! That's a good point, I added tests now as well.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

encukou
encukou reviewed Apr 25, 2024
View reviewed changes
Comment thread Lib/test/test_ipaddress.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@encukou
Rename test
664ac36
encukou
encukou approved these changes Apr 25, 2024
View reviewed changes

@encukou encukou left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thank you!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-app bedevere-app Bot added awaiting merge and removed awaiting review labels Apr 25, 2024
@encukou
encukou enabled auto-merge (squash) April 25, 2024 14:46
@encukou encukou added needs backport to 3.12 only security fixes and removed needs backport to 3.12 only security fixes labels Apr 25, 2024
@encukou
encukou merged commit fb7f79b into python:main Apr 25, 2024
@bedevere-app bedevere-app Bot removed the awaiting merge label Apr 25, 2024
@paravoid
paravoid deleted the ipv4-mapped-loopback branch April 25, 2024 15:35
@paravoid

paravoid commented Apr 25, 2024

Copy link
Copy Markdown
Contributor Author

Looks good, thank you!

Thank you so much for the super quick turnaround! Is this something that should/could also make it to 3.12.x or does it sit outside of the stable bugfix policies?

encukou reacted with heart emoji
All reactions
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@encukou encukou added the needs backport to 3.12 only security fixes label Apr 29, 2024
@miss-islington-app

miss-islington-app Bot commented Apr 29, 2024

Copy link
Copy Markdown

Thanks @paravoid for the PR, and @encukou for merging it 🌮🎉.. I'm working now to backport this PR to: 3.12.
🐍🍒⛏🤖 I'm not a witch! I'm not a witch!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Apr 29, 2024
@paravoid @miss-islington
pythongh-117566: fix IPv6Address.is_loopback for IPv4-mapped loopbacks (
4ab6c58
pythonGH-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.
(cherry picked from commit fb7f79b)

Co-authored-by: Faidon Liambotis <[email protected]>
@bedevere-app

bedevere-app Bot commented Apr 29, 2024

Copy link
Copy Markdown

GH-118391 is a backport of this pull request to the 3.12 branch.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot removed the needs backport to 3.12 only security fixes label Apr 29, 2024
encukou pushed a commit that referenced this pull request Apr 29, 2024
@miss-islington @paravoid
[3.12] gh-117566: fix IPv6Address.is_loopback for IPv4-mapped loopbac…
3989894
…ks (GH-117567) (GH-118391)

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.

(cherry picked from commit fb7f79b)

Co-authored-by: Faidon Liambotis <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@encukou encukou encukou approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@paravoid @encukou
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.