Repository navigation
Conversation
We support indefinite length bytestring in the Read module. In order to do it we add two extra variants for bigint deseralization, both puts us to the slow-path to start consumption of the chunks. This serialization is considered non-canonical thus canonical read rejects is. While specification is silent about it, the cbor.me implementation always converts bigit into a fixed size byte blob. Fixes well-typed#263.
The previous patch, missed a case in which incremental decoding is fed with `0xc2` (or `0xc3`) indicating that we are decoding big integer, but then the `0x5f` (`TypeBytesIndef`) is in the next chunk. The original implementation ended up in `adjustContBigUIntNeedHeader` or `adjustContBigNIntNeedHeader` which issues `ConsumeBytes`, which fails on `TypeBytesIndef`. For that reason both `adjustContBig[UN]IntNeedHeader` need to first peek and verify weather we are at `TypeBytesIndef` (`0x5f`) or passed it. This fix is not required for `adjustContCanonicalBig[UN]IntNeedHeader` since canonical encoding of `Integer`s must not use indefinite encoding, and it is rightfully rejected by `tryConsumeBytes`.
4 tasks
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.
This PR subsumes #371 - it fixes a subtle bug in incremental decoding of big integers, also provides a test which shows the bug and verifies it is fixed.