decoder/nanocbor_leave_container(): reject (some) invalid arguments #92
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.
The documentation of
nanocbor_leave_container()
states the following preconditions:This PR adds a check to the implementation to (partly) ensure these preconditions and otherwise return an error code. To this end, the API is changed in a backwards-compatible manner with
int
as return type instead ofvoid
.The check ensures that
container
is actually a container and that it has been consumed up to the end (precondition (2)). It also adds a plausibility check for (1) by ensuring thatcontainer->curr
is betweenit->curr
andit->end
.I'm not sure whether the selected error value
NANOCBOR_ERR_INVALID_TYPE
is the appropriate one, maybe it would make sense to addNANOCBOR_ERR_INVALID_ARGUMENT
or something similar tonanocbor_error_t
.