Handle AV caused by invalid IBC data (#27029) (#27034)
authorFadi Hanna <fadim@microsoft.com>
Fri, 4 Oct 2019 18:58:23 +0000 (11:58 -0700)
committerGitHub <noreply@github.com>
Fri, 4 Oct 2019 18:58:23 +0000 (11:58 -0700)
Make FindOrCreateAssociatedMethodDesc throw a type load exception instead of an AV, which can't be handled by EX_TRY/EX_CATCH on Unix systems.

src/vm/genmeth.cpp

index 5d09cdf..d664fdc 100644 (file)
@@ -802,7 +802,11 @@ MethodDesc::FindOrCreateAssociatedMethodDesc(MethodDesc* pDefMD,
     // Some callers pass a pExactMT that is a subtype of a parent type of pDefMD.
     // Find the actual exact parent of pDefMD.
     pExactMT = pDefMD->GetExactDeclaringType(pExactMT);
-    _ASSERTE(pExactMT != NULL);
+    if (pExactMT == NULL)
+    {
+        _ASSERTE(false);
+        COMPlusThrowHR(COR_E_TYPELOAD);
+    }
 
     if (pDefMD->HasClassOrMethodInstantiation() || !methodInst.IsEmpty())
     {