-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
System.Reflection.Emit.ParameterBuilder.SetCustomAttribute() throws undocumented ArgumentOutOfRangeException #12747
Comments
For the mentioned test case It's pretty old code so maybe @vargaz or @lambdageek can recall anything about it? |
I'll take a look. It kind of seems like |
Turns out |
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes mono#12747
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes mono#12747
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes mono#12747
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes mono#12747
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes #12747
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes #12747
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes #12747
Normally strings are encoded as length-then-utf8 in ECMA-335. But a null String is encoded as just the byte 0xFF. When we make a CustomAttributeBuilder for a MarshalAsAttribute and attach it to some parameter we first encode the CAB as a byte blob and then decode it in CAB.get_umarshal into a UnmanagedMarshal attribute. But the decoding didn't account for the possibility of null strings. Fixes #12747
The bug (mono/mono#12747) caused exception when copying MarshalAsAttribute data. Now parameter attributes are working, though with limitations. Removed arrays from generating hash codes (they return just pointers)
Bumps to mono/api-snapshot@ae01378 Bumps to mono/reference-assemblies@e5173a5 Bumps to mono/bockbuild@d30329d Bumps to mono/boringssl@3d87996 Bumps to mono/corefx@72f7d76 Bumps to mono/corert@1b7d4a1 Bumps to mono/helix-binaries@7e893ea Bumps to mono/illinker-test-assets@f21ff68 Bumps to dotnet/linker@13d864e Bumps to mono/llvm@1aaaaa5 [mono] Bumps to mono/llvm@2c2cffe [xamarin-android] Bumps to mono/NUnitLite@0029561 Bumps to mono/roslyn-binaries@0bbc9b4 Bumps to mono/xunit-binaries@8f6e62e $ git diff --shortstat 886c4901..e66c7667 # mono 3597 files changed, 350850 insertions(+), 91128 deletions(-) $ git diff --shortstat 349752c464c5fc93b32e7d45825f2890c85c8b7d..2c2cffedf01e0fe266b9aaad2c2563e05b750ff4 240 files changed, 18562 insertions(+), 6581 deletions(-) Context: https://github.com/dotnet/coreclr/issues/22046 Fixes: CVE 2018-8292 on macOS Fixes: http://work.devdiv.io/737323 Fixes: https://github.com/dotnet/corefx/issues/33965 Fixes: dotnet/standard#642 Fixes: mono/mono#6997 Fixes: mono/mono#7326 Fixes: mono/mono#7517 Fixes: mono/mono#7750 Fixes: mono/mono#7859 Fixes: mono/mono#8360 Fixes: mono/mono#8460 Fixes: mono/mono#8766 Fixes: mono/mono#8922 Fixes: mono/mono#9418 Fixes: mono/mono#9507 Fixes: mono/mono#9951 Fixes: mono/mono#10024 Fixes: mono/mono#10030 Fixes: mono/mono#10038 Fixes: mono/mono#10448 Fixes: mono/mono#10735 Fixes: mono/mono#10735 Fixes: mono/mono#10737 Fixes: mono/mono#10743 Fixes: mono/mono#10834 Fixes: mono/mono#10837 Fixes: mono/mono#10838 Fixes: mono/mono#10863 Fixes: mono/mono#10945 Fixes: mono/mono#11020 Fixes: mono/mono#11021 Fixes: mono/mono#11021 Fixes: mono/mono#11049 Fixes: mono/mono#11091 Fixes: mono/mono#11095 Fixes: mono/mono#11123 Fixes: mono/mono#11138 Fixes: mono/mono#11146 Fixes: mono/mono#11202 Fixes: mono/mono#11214 Fixes: mono/mono#11317 Fixes: mono/mono#11326 Fixes: mono/mono#11378 Fixes: mono/mono#11385 Fixes: mono/mono#11478 Fixes: mono/mono#11479 Fixes: mono/mono#11488 Fixes: mono/mono#11489 Fixes: mono/mono#11527 Fixes: mono/mono#11529 Fixes: mono/mono#11596 Fixes: mono/mono#11603 Fixes: mono/mono#11613 Fixes: mono/mono#11623 Fixes: mono/mono#11663 Fixes: mono/mono#11681 Fixes: mono/mono#11684 Fixes: mono/mono#11693 Fixes: mono/mono#11697 Fixes: mono/mono#11779 Fixes: mono/mono#11809 Fixes: mono/mono#11858 Fixes: mono/mono#11895 Fixes: mono/mono#11898 Fixes: mono/mono#11898 Fixes: mono/mono#11965 Fixes: mono/mono#12182 Fixes: mono/mono#12193 Fixes: mono/mono#12218 Fixes: mono/mono#12235 Fixes: mono/mono#12263 Fixes: mono/mono#12307 Fixes: mono/mono#12331 Fixes: mono/mono#12362 Fixes: mono/mono#12374 Fixes: mono/mono#12402 Fixes: mono/mono#12421 Fixes: mono/mono#12461 Fixes: mono/mono#12479 Fixes: mono/mono#12479 Fixes: mono/mono#12552 Fixes: mono/mono#12603 Fixes: mono/mono#12747 Fixes: mono/mono#12831 Fixes: mono/mono#12843 Fixes: mono/mono#12881 Fixes: mono/mono#13030 Fixes: mono/mono#13284 Fixes: mono/mono#13297 Fixes: mono/mono#13455 Fixes: mono/mono#13460 Fixes: mono/mono#13478 Fixes: mono/mono#13479 Fixes: mono/mono#13522 Fixes: mono/mono#13607 Fixes: mono/mono#13610 Fixes: mono/mono#13610 Fixes: mono/mono#13639 Fixes: mono/mono#13672 Fixes: mono/mono#13834 Fixes: mono/mono#13878 Fixes: mono/mono#6352 Fixes: mono/monodevelop#6898 Fixes: xamarin/maccore#1069 Fixes: xamarin/maccore#1407 Fixes: xamarin/maccore#604 Fixes: xamarin/xamarin-macios#4984 Fixes: xamarin/xamarin-macios#5289 Fixes: xamarin/xamarin-macios#5363 Fixes: xamarin/xamarin-macios#5381 Fixes: https://issuetracker.unity3d.com/issues/editor-crashes-with-g-logv-when-entering-play-mode-with-active-flowcanvas-script
Steps to Reproduce
Compile and run following program:
Current Behavior
System.ArgumentOutOfRangeException
is thrown at lineparamBuilder.SetCustomAttribute(attrBuilder);
Expected Behavior
Of course no exceptions (or at least documented ones).
Running the same program (even the same exe file) with .net framework executes everything without exception.
On which platforms did you notice this
[ ] macOS
[ ] Linux
[x] Windows
Version Used:
Stacktrace
The text was updated successfully, but these errors were encountered: