inflate.c: fix potential overflow in inflatePrime #1051
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.
The condition
state->bits + (uInt)bits > 32
was replaced withstate->bits + (uInt)bits >= 32
to prevent potential overflow when shiftingvalue
bystate->bits
. A shift equal to or greater than the size of the data type (32 bits) can lead to undefined behavior.This change ensures that the sum of
state->bits
andbits
never reaches 32, avoiding the risk of overflow in the expression(unsigned)value << state->bits
.While the scenario leading to overflow is unlikely in practice due to the constraints of the calling function
inflatePrime
, I recommend applying this change to improve code robustness and adhere to safe coding practices. This is a preventive measure to eliminate any potential risks in edge cases.Triggers found by static analyzer Svace.
Signed-off-by: Anton Moryakov [email protected]