From 484b242e343276244e9c546945445fc30739554f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Strehovsk=C3=BD?= Date: Tue, 19 Mar 2024 07:34:20 +0100 Subject: [PATCH] Be more resilient against invalid metadata in fields Addresses some of the problems seen in #99580. We already check methods and types are loadable. Should do the same for fields. --- .../aot/ILCompiler.Compiler/Compiler/RootingHelpers.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/RootingHelpers.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/RootingHelpers.cs index ffd286cce759f2..ce222b1334e874 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/RootingHelpers.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/RootingHelpers.cs @@ -227,6 +227,16 @@ public static bool TryGetDependenciesForReflectedField(ref DependencyList depend ((MetadataType)owningType).MakeInstantiatedType(inst)); } + try + { + // Make sure we're not putting something into the graph that will crash later. + factory.TypeSystemContext.EnsureLoadableType(field.FieldType); + } + catch (TypeSystemException) + { + return false; + } + dependencies.Add(factory.ReflectedField(field), reason); return true;