Tighten TRACE path_len guard to account for SNR append #1658
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
When a node forwards a TRACE packet, it appends its SNR reading to
pkt->pathand incrementspath_len. The existing guard checkspath_len < MAX_PATH_SIZE, which allowspath_lenof 63 through. After the append,path_lenbecomes 64 — equal toMAX_PATH_SIZE. The write itself is in-bounds (the array is 64 bytes, index 63 is valid), butpath_lenis now at the maximum, which could cause an off-by-one in any downstream code that usespath_lenas an array index without re-checking.Not exploitable in the current codebase, but a defensive fix to prevent future bugs as the code evolves.
Fix
Change the guard from
path_len < MAX_PATH_SIZEtopath_len + 1 < MAX_PATH_SIZE, ensuring there is always room for the SNR append withoutpath_lenreachingMAX_PATH_SIZE.Test plan
Heltec_v3_companion_radio_ble