Repository navigation
fix: req.subdomains splitting bracketed IPv6 host with IPv4 part - #7545
Closed
princejain756 wants to merge 1 commit into
Closed
princejain756 wants to merge 1 commit into
princejain756 wants to merge 1 commit into
Conversation
req.hostname keeps the brackets on an IPv6 literal, so isIP() reports 0 and the hostname gets split on dots. That only works out for addresses without dots; an IPv4-mapped IPv6 host like [::ffff:127.0.0.1] is split into bogus subdomains. Treat bracketed hosts as IP literals so they are never split. Fixes expressjs#7532
Author
|
You are right, sorry about that. I checked the issue for assignees but did not look for already-linked PRs before filing. I will close this one and check the PR list on the issue before filing in the future. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #7532
req.hostnamekeeps the brackets on an IPv6 literal, andnet.isIPreturns 0 for a bracketed string, soreq.subdomainstreats[::ffff:127.0.0.1]as a domain and splits on the dots in the IPv4-mapped tail. The result is['0', '[::ffff:127']instead of[].Bracketed hosts are now treated as IP literals and never split, matching what already happens accidentally for
[::1](no dots to split on).Validation: added a regression test that returns
['0', '[::ffff:127']without the fix and[]with it;npm testpasses 1262 tests and eslint is clean.