[CDRIVER-6017] Tweak visitor behavior when finding corrupt BSON #2019
+251
−70
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 is a minimal fix for some edge cases around BSON iteration/visitation and text validation. A larger change could be made to make the APIs more complete and easier to use, but this is enough to fix a bug related to UTF-8 validation.
We now invoke
visit_corrupt
in more cases wherebson_visit_all
cannot properly decode elements, rather than just stopping with the boolean error code.This also adds an error code to
bson_validate
for encountering corruption. Previously, it would just seterror->code = 0
and the message tocorrupt BSON
, which is counter-intuitive to those that expecterror->code == 0
to indicate success.See also: CDRIVER-4448