fix: prevent unsigned wraparound in erase_tensor_id when shrinking tensor_list #1447
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.
In
erase_tensor_id
, subtracting 1 fromgraph->tensor_num
(uint16_t
) could wrap around to a large value whentensor_num
is0
. This causedsys_realloc
to allocate an unexpectedly huge size, flagged as potential integer overflow. Whentensor_num
is 0,subtracting 1 wraps around to a large value, which is a classic CWE-190: Integer Overflow or Wraparound.
Changes:
(tensor_num - 1)
tosize_t
before multiplying bysizeof(ir_tensor_t*)
I can suggest another version of fix with additional checking (if you do not like the current one):