fix: encode connection data port values in host byte order#599
Open
MrAlaskan wants to merge 1 commit into
Open
Conversation
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.
Summary
This PR fixes the port values returned by
GetConnectionDataandSearchConnectionDataso that they are encoded with the correct byte order in Connection Manager responses.Problem
AssembleConnectionDataResponseMessage()currently writesconnection_object->originator_address.sin_portandconnection_object->remote_address.sin_portdirectly into the CIP response withAddIntToMessage(). However, both fields come fromsockaddr_inand are stored in network byte order.AddIntToMessage()encodes the provided integer value as a CIP little-endianUINT. On little-endian hosts, directly passing a network-order port therefore causes the returned port number to be byte-swapped in the response payload.This makes the Connection Manager diagnostic response inconsistent with the actual network connection state and can mislead clients or conformance tools that rely on the reported Originator and Target port values.
Changes
originator_address.sin_portandremote_address.sin_portfrom network byte order to host byte order before encoding them into the response.