Repository navigation
Handle partial-word serde byte input - #3755
Open
1sgtpepper wants to merge 2 commits into
Open
1sgtpepper wants to merge 2 commits into
1sgtpepper wants to merge 2 commits into
Conversation
|
@Kuhai9801 is attempting to deploy a commit to the Boundless Team on Vercel. A member of the Team first needs to authorize it. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Fixes #3754.
risc0_zkvm::serde::from_slicecan currently panic when called with byte input whose length is not a complete number ofu32words, e.g.from_slice::<u32, u8>(&[0, 1, 2]).This PR adds a small pre-check that returns
Error::DeserializeUnexpectedEndfor partial-word input before attempting the bytemuck cast. It preserves the existing unaligned-but-complete byte-slice path.Implementation note
This also changes the remaining bytemuck catch-all arm from a panic to
Err(Error::NotSupported). The partial-word length precheck is the actual fix for this issue; the catch-all change keepsfrom_slicealigned with itsResultAPI. If maintainers prefer the smallest possible behavior change, I can drop that part and leave the catch-all arm unchanged.Tests
RISC0_SKIP_BUILD=1was needed in my Termux/Android environment because guest build scripts otherwise fail withUnsupportedPlatform("unknown OS: android").