MOD-7266 make sure to end() deserialization, to disallow trailing c… - #1554
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1554 +/- ##
==========================================
+ Coverage 75.30% 75.32% +0.02%
==========================================
Files 15 15
Lines 4240 4244 +4
==========================================
+ Hits 3193 3197 +4
Misses 1047 1047 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
TalBarYakar
previously approved these changes
Apr 13, 2026
TalBarYakar
left a comment
Contributor
There was a problem hiding this comment.
diasllow -> diasllow
end() deserialization, to diasllow trailing c…end() deserialization, to disallow trailing c…
TalBarYakar
approved these changes
Apr 13, 2026
AvivDavid23
added a commit
that referenced
this pull request
Apr 14, 2026
AvivDavid23
added a commit
that referenced
this pull request
Apr 14, 2026
* MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5.
AvivDavid23
added a commit
that referenced
this pull request
Apr 26, 2026
* Cherry-pick bug fixes to 8.8 (#1557) * MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5. * Fix API incompatibilities: use &'j S instead of ValueRef, fix root.clone() Made-with: Cursor * cargo fmt Made-with: Cursor
AvivDavid23
added a commit
that referenced
this pull request
Apr 26, 2026
* MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5.
AvivDavid23
added a commit
that referenced
this pull request
Apr 26, 2026
* MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5.
AvivDavid23
added a commit
that referenced
this pull request
Apr 26, 2026
* Cherry-pick bug fixes to 8.8 (#1557) * MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5. * Fix API incompatibilities: use &'j S instead of ValueRef, fix root.clone(), fix error type annotation Made-with: Cursor * cargo fmt Made-with: Cursor
AvivDavid23
added a commit
that referenced
this pull request
Apr 26, 2026
* Cherry-pick bug fixes to 8.8 (#1557) * MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5. * Fix API incompatibilities: use &'j S instead of ValueRef, fix root.clone() Made-with: Cursor * cargo fmt Made-with: Cursor
AvivDavid23
added a commit
that referenced
this pull request
Apr 26, 2026
* Cherry-pick bug fixes to 8.8 (#1557) * MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5. * Fix API incompatibilities: use &'j S instead of ValueRef, fix root.clone(), fix error type annotation Made-with: Cursor * cargo fmt Made-with: Cursor * Remove test_filter_null: null literal not supported in 2.4 parser grammar The 2.4 jsonpath grammar predates null literal support in filter expressions, causing QueryCompilationError for "$[?(@==null)]". Made-with: Cursor * Fix 2.4 test failures: apply MOD-6722 mutation ordering and remove crashing tests - Apply compare_paths_for_mutation to src/commands.rs (arr_insert/pop/trim impl and legacy functions) — the mutation ordering fix was never ported to 2.4's src/commands.rs during the initial cherry-pick - Force rebuild exposed stale binary for MOD-7266 (deserializer.end()); the fix was already in src/ivalue_manager.rs but the old .dylib predated it - Add test for trailing-char rejection in ivalue_manager unit tests - Remove test_recursive_descent: JSON.SET with $..* wildcard crashes 2.4's server (pre-existing bug unrelated to this cherry-pick) Made-with: Cursor * Fix serde_value_manager: add deserializer.end() to reject trailing chars (MOD-7266) Made-with: Cursor
AvivDavid23
added a commit
that referenced
this pull request
Apr 26, 2026
* Cherry-pick bug fixes to 8.8 (#1557) * MOD-6722 Fix mutation ordering for array commands with recursive paths (#1543) * MOD-7266 make sure to `end()` deserialization, to disallow trailing c… (#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (#1542) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filter comparisons, Don't evaluate filters on scalar types * MOD-7264 | MOD-7270 fmt * tests(for coverage) * Revert "tests(for coverage)" This reverts commit b0668a5. * Fix API incompatibilities: use &'j S instead of ValueRef, fix root.clone(), fix error type annotation Made-with: Cursor * cargo fmt Made-with: Cursor
YaacovHazan
pushed a commit
to redis/redis
that referenced
this pull request
May 14, 2026
JSON - 8.7.91: * Cherry-pick bug fixes to 8.8 (RedisJSON/RedisJSON#1557) * MOD-6722 Fix mutation ordering for array commands with recursive paths (RedisJSON/RedisJSON#1543) * MOD-7266 make sure to end() deserialization, to disallow trailing c… (RedisJSON/RedisJSON#1554) * MOD-14664 Json Path evaluation - Allow multi-result nodelists in filt… (RedisJSON/RedisJSON#1542) Bloom - 8.7.91 * Lili: RED-180951 RED-181297 RED-184457 RED-184456 RED-184458 RED-184459 fixing bugs and improving the code (RedisBloom/RedisBloom#1002) * MOD-14675 - refresh os list to 8.8 (RedisBloom/RedisBloom#976) Time Series - 8.7.91: * MOD-15262 - Align TimeSeries with the RedisModule_GetUserUserName API… (RedisTimeSeries/RedisTimeSeries#1985) * MOD-14420 fix count reducers return wrong NaN (RedisTimeSeries/RedisTimeSeries#2013) (RedisTimeSeries/RedisTimeSeries#2016) * Lili- RED-180951 RED-180027 fixing bugs and improving the code (RedisTimeSeries/RedisTimeSeries#2003) * MOD-14674 - refresh os list to 8.8 (RedisTimeSeries/RedisTimeSeries#1946)
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.
…hars
Note
Medium Risk
Changes JSON parsing behavior for
JSON.SET/JSON.MERGE(and any path usingManager::from_str) by rejecting inputs with trailing characters, which may break clients that relied on lenient parsing but improves correctness and safety.Overview
Tightens JSON value parsing by requiring
serde_jsondeserialization to fully consume the input:RedisIValueJsonKeyManager::from_strnow callsDeserializer::end()so literals/values with trailing characters are rejected instead of being silently truncated.Adds a regression test ensuring
JSON.SETfails on values liketrueabc,{"a":1}x, and123abc, and fixes a malformed JSON literal in an existingJSON.MERGEnested test.Reviewed by Cursor Bugbot for commit b6ff2ee. Bugbot is set up for automated code reviews on this repo. Configure here.