[release/9.0] fix guid version > 7#108351
Merged
carlossanlop merged 2 commits intorelease/9.0from Oct 16, 2024
Merged
Conversation
This was referenced Sep 28, 2024
Contributor
|
Tagging subscribers to this area: @dotnet/area-system-runtime |
jeffhandley
approved these changes
Sep 30, 2024
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Backport of #108314 to release/9.0
/cc @tannergooding @kasperk81
Customer Impact
#108267 - Manually creating a GUID where the version is 8 higher will result in an incorrect value being returned.
Regression
No, this is a net new API in .NET 9
Testing
Explicit validation tests were added. The issue is due to the implicit sign extension that exists. That is, because the underlying field is
shortand because C# doesn't operate directly on "small" integer types in many scenarios, it implicitly sign extends up tointbefore the unsigned right shift would occur.Thus, the code
_c >>> 12could return an incorrect value as-32768would change from0x8000to0xFFFF_8000and would become0x000F_FFF8, rather than0x8, with similar results happening for any value in the range[-1, -32768].Risk
Low. This is a net new API in .NET 9.