From: Ryan Lucia Date: Wed, 21 Oct 2020 15:32:53 +0000 (-0400) Subject: [mono] Copy image data with AssemblyLoadContext.LoadFromStream (#43592) X-Git-Tag: submit/tizen/20210909.063632~4992 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bf8f24c710d97ff840983a574d67b40ff6de1301;p=platform%2Fupstream%2Fdotnet%2Fruntime.git [mono] Copy image data with AssemblyLoadContext.LoadFromStream (#43592) We don't actually pin the byte array, so it must be copied or it can be overwritten once we run a GC on the LOH. Fixes https://github.com/dotnet/runtime/issues/43402 Tested manually that it fixes the issue using the associated repro. This isn't really something that lends itself to a test, so that's the best I can do. --- diff --git a/src/mono/mono/metadata/appdomain.c b/src/mono/mono/metadata/appdomain.c index 397045a..a14b98d 100644 --- a/src/mono/mono/metadata/appdomain.c +++ b/src/mono/mono/metadata/appdomain.c @@ -2832,7 +2832,7 @@ mono_alc_load_raw_bytes (MonoAssemblyLoadContext *alc, guint8 *assembly_data, gu { MonoAssembly *ass = NULL; MonoImageOpenStatus status; - MonoImage *image = mono_image_open_from_data_internal (alc, (char*)assembly_data, raw_assembly_len, FALSE, NULL, refonly, FALSE, NULL, NULL); + MonoImage *image = mono_image_open_from_data_internal (alc, (char*)assembly_data, raw_assembly_len, TRUE, NULL, refonly, FALSE, NULL, NULL); if (!image) { mono_error_set_bad_image_by_name (error, "In memory assembly", "0x%p", assembly_data);