This repository was archived by the owner on Jan 23, 2023. It is now read-only.
avoid processing incorrect ICMP message on Unix#34084
Merged
wfurt merged 2 commits intodotnet:masterfrom Dec 19, 2018
Merged
Conversation
stephentoub
reviewed
Dec 14, 2018
stephentoub
reviewed
Dec 14, 2018
| // Disable warning about obsolete property. We could use GetAddressBytes but that allocates. | ||
| if (!ep.Address.IsIPv6Multicast && !(addrFamily == AddressFamily.InterNetwork && (ep.Address.Address & 0xf0) == 0xe0)) | ||
| { | ||
| // If it is not multicast, use Connect to scope responses only tho target address. |
stephentoub
reviewed
Dec 14, 2018
stephentoub
approved these changes
Dec 19, 2018
This was referenced Apr 13, 2020
picenka21
pushed a commit
to picenka21/runtime
that referenced
this pull request
Feb 18, 2022
* use connect on unicast ping addresses to avoild processing incorrect responses * feedback from review Commit migrated from dotnet/corefx@3172386
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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 #33699 Ping.Unix falsely returns successful pings
When we use RAW socket implementation we simply create socket to get all ICMP.
When there are multiple pings going (even from different process) the raw socket would receive all ICMP responses and than it can incorrectly report success even for non existing host.
This change effectively implements address filtering. Instead of doing it explicitly as discussed in issue, it uses Connect() to ping socket to only that address for Unicast. (similar behavior to UDP)
I don't know if there is better way to determine multicast (leading 1110) IP for IPv4.
Aside from running tests, I did verify that ping to multicast (224.0.0.1 all nodes) still works as it used to. There is currently not good API to know what nodes responded to the query. So successful response means that there is at least one responding node.
I also did tests with broadcast and directed broadcast (xx.xx.xx.255)
It fails with even for root:
this is because we would need to do ioctl to enable broadcast functions on socket.
This behavior remains same with this change.