This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
Prevent loading byref-like types with invalid layout #25200
Merged
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.
First approximation of a fix for #25057.
This has two problems:
ref struct
will fail to load when not aligned properly.ByReference<T>
field doesn't overlap with another non-byreference field.Question is whether we're okay with those limitations, or whether we need a better fix. Better fix would likely entail inefficiently walking over the fields à la
FindByRefPointerOffsetsInByRefLikeObject
(doing the more efficient thing that we do for object references below would require a GCDesc representation of byrefness).Contributes to #25057.