Add strict overflow checks for uint and int types #237
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.
This PR causes
coderNumber
to throw an error when encoding uint or int values that are too big too big to fit in the allotted size. For example, the max value for a number of typeuint8
is 255. Now, if you try to encode an number greater than 255, you will see an error.Prior to this PR, the behavior ofcoderNumber
was to add additional bytes to the encoded value, (e.g., auint256
value bigger than2^256-1
would encode to 64 bytes instead of 32). This would result in an invalid encoding since int and uint types have specifically defined sizes in Solidity.Edit: Prior to this PR, the behavior of
coderNumber
was to implicitly apply modulo2^(size*8)
. So auint256
value of2^256
would encode to 0. This can lead to confusing and surprising behavior.