Merging internal commits for release/9.0#125402
Open
vseanreesermsft wants to merge 15 commits intodotnet:release/9.0from
Open
Merging internal commits for release/9.0#125402vseanreesermsft wants to merge 15 commits intodotnet:release/9.0from
vseanreesermsft wants to merge 15 commits intodotnet:release/9.0from
Conversation
…ut (dotnet#124540) Base64Url.DecodeFromChars in Microsoft.Bcl.Memory has an out-of-bounds read bug: DecodeFrom uses Unsafe.Add with raw char values as indices into a 256-element DecodingMap without checking the DecodeRemaining return value first. Non-ASCII chars (value > ~2048) cause an AccessViolationException on .NET 8. Workaround: Add System.Text.Ascii.IsValid check before decoding to reject non-ASCII input early. Base64/Base64Url only uses ASCII characters, so any non-ASCII input is inherently invalid. Fixes dotnet#124513 --------- Co-authored-by: t.csala <t.csala@criteo.com>
…ut (dotnet#124540) Base64Url.DecodeFromChars in Microsoft.Bcl.Memory has an out-of-bounds read bug: DecodeFrom uses Unsafe.Add with raw char values as indices into a 256-element DecodingMap without checking the DecodeRemaining return value first. Non-ASCII chars (value > ~2048) cause an AccessViolationException on .NET 8. Workaround: Add System.Text.Ascii.IsValid check before decoding to reject non-ASCII input early. Base64/Base64Url only uses ASCII characters, so any non-ASCII input is inherently invalid. Fixes dotnet#124513 --------- Co-authored-by: t.csala <t.csala@criteo.com>
…-merge-9.0-2026-03-10-1317
Contributor
|
Tagging subscribers to this area: @dotnet/area-system-memory |
Contributor
There was a problem hiding this comment.
Pull request overview
Tightens Base64(Base64Url) decoding error handling for trailing / partial blocks and adds a regression test to ensure non-ASCII (including chars > 255) input is rejected cleanly.
Changes:
- Treat negative return from
DecodeRemainingas invalid data immediately during final-block decoding. - Add a new invalid-input test case covering a non-ASCII character > 255 (
\u1000) in the scalar decoding path. - Remove the BOM from the Base64Url Unicode API unit test file header (no functional impact).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Base64Helper/Base64DecoderHelper.cs |
Adds an early invalid-data exit when DecodeRemaining signals failure. |
src/libraries/System.Memory/tests/Base64Url/Base64UrlUnicodeAPIsUnitTests.cs |
Adds regression coverage for non-ASCII (>255) invalid decode input; normalizes file header. |
You can also share your feedback on Copilot code review. Take the survey.
This was referenced Mar 11, 2026
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.
No description provided.