netcode 1.4.6: payload packets carry the reader's eight bytes of slack - #189
Merged
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.
A payload packet now carries eight bytes of slack behind the payload it hands to your reader. netcode returns a pointer into a struct allocated at sizeof plus payload_bytes, and serialize's BitReader loads an eight-byte window from the byte at the read position, so a read that starts in the last seven payload bytes used to reach past the allocation; the old one-byte trailing array left four bytes of alignment padding where the reader contract needs eight. The trailing array is eight bytes, a compile-time check pins it so it cannot shrink, and the arithmetic that sizes the packet is unchanged everywhere else. Nothing on the wire changes and no symbol changes; a consumer that reads netcode payloads through serialize, yojimbo included, gets an in-bounds read on every packet by relinking. Servers and clients should take this release.