fix:(encoder) insufficient buffer size check for OP_i32
#269
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.
since Go runtime always allocates memory of JIT stack
_Stack
right after that of output bufferbuf
:_OP_i32
has a boundary check of size 11, but in native-C code, when the integer is bigger than 99999999, the program will usevmovdqu %xmm0, (%rdi)
instruction to write a 16-byte chars intobuf
and cross the bound of itonce buffer has no space more than 16B, out-of-range memory writing can cause the corruption of
_Stack
, which finally causes abnormal behaviors of the programHere is reproducible codes: