Validate buffer length before reading fields in Packet::readFrom #1666
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.
Severity: Low
Summary
Packet::readFromreads the header byte, transport codes (4 bytes if present), andpath_lenfrom the source buffer before performing any length validation. With a short input (e.g.len = 0), these reads go past the end of the source buffer.Unlike the main radio receive path (which parses packets inline in
Dispatcher::checkRecvwith proper bounds checking),readFromis used by bridge interfaces (RS232, ESP-NOW) andimportContact(flash blob storage). A corrupted blob or malformed bridge frame could trigger the over-read.Fix
Add upfront length checks:
Test plan
Heltec_v3_companion_radio_ble