Add bounds check to Buffer slice method #6432
Merged
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.
Connections
#6428
Description
The Buffer slice method currently doesn't perform bounds checks on the offset and size arguments. This is inconsistent with Rust's Array and Vec, which panic when attempting to take a slice out of bounds.
I recently encountered a confusing issue caused by attempting to map a buffer out of bounds. Making the Buffer slice method consistent with Rust's standard libraries by panicking in such cases would help debug such issues.
Testing
This PR includes test cases for the bounds-checking function, including tests for integer wraparound.
Checklist
cargo fmt
.taplo format
.cargo clippy
. If applicable, add:--target wasm32-unknown-unknown
--target wasm32-unknown-emscripten
cargo xtask test
to run tests.CHANGELOG.md
. See simple instructions inside file.