json: require RFC3339 'T' separator in date-time format validator#3116
Merged
Conversation
Since time 0.3.37 (time-rs/time#700), the crate's RFC3339 parser accepts any byte as the date/time separator. JSON Schema's date-time format is defined by the RFC3339 ABNF rule, which permits only 'T' (case-insensitive), so check the separator explicitly before delegating to the time crate. Fixes #3108
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.
Description:
Fixes #3108. The
date-timeformat validator silently drifted lenient whentimewas bumped 0.3.36 → 0.3.44 (#2302): since time-rs/time#700 the crate's RFC3339 parser accepts any byte as the date/time separator, not just a space. JSON Schema definesformat: date-timeas the RFC3339 ABNF rule, which permits onlyT(case-insensitive), so the validator now checks the separator byte explicitly before delegating totime.Workflow steps:
No workflow change. Strings like
2022-09-11 10:31:25Zare no longer detected or validated asdate-time— schema inference stops mistagging mixed-format fields, and existing write schemas declaringformat: date-timereject them.Documentation links affected:
None.
Notes for reviewers:
full-dateis fixed-width; lowercasetstays accepted per ABNF case-insensitivity (consistent with existing lowercasezhandling).test_format_casestable;cargo test -p jsonandcargo test -p doc --features combinepass with no snapshot fallout.