Fix memory overflow and capacity regression. #727
+1
−2
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.
Fix Memory Overflow and Capacity Regression in
srtp_stream_list_insert
This pull request addresses a critical issue in the
srtp_stream_list_insert
function where potential integer overflow and capacity regression could occur during memory allocation.Problem
The original code attempted to validate the multiplication of
sizeof(list_entry)
andnew_capacity
to check for overflow. However, this approach was flawed because the multiplication itself could overflow before the comparison, leading to undefined behavior.Solution
The fix ensures:
new_capacity
againstSIZE_MAX / sizeof(list_entry)
before performing the multiplication.new_capacity
does not regress below the current capacity, safeguarding against unintentional regressions.Updated Code
The following changes were made in the
srtp_stream_list_insert
function:Impact
new_capacity
always increases or remains valid, preventing capacity regression.Testing
srtp_stream_list_insert
without any regressions.Additional Notes