summaryrefslogtreecommitdiff
path: root/src/zap/zapinfo.cpp
diff options
context:
space:
mode:
authorJohn Chen <jochen@microsoft.com>2016-06-02 06:43:23 -0700
committerJohn Chen <jochen@microsoft.com>2016-06-02 06:43:23 -0700
commit21751dbaa36ffb621e79b4cfeb5a7db00d397511 (patch)
treebf619a3d0003a283914805645df22832cc2b0db9 /src/zap/zapinfo.cpp
parent98568fb845ccaa97e18433ac13741913d6c8ffec (diff)
downloadcoreclr-21751dbaa36ffb621e79b4cfeb5a7db00d397511.tar.gz
coreclr-21751dbaa36ffb621e79b4cfeb5a7db00d397511.tar.bz2
coreclr-21751dbaa36ffb621e79b4cfeb5a7db00d397511.zip
Validate new object construction in Ready to Run (#5398)
Existing Ready to Run implementation doesn't fully validate requests to create object instances, and allows some invalidate requests (e.g., to create an instance of an abstract class). This causes failure of test case Loader.classloader_generics_Instantiation_Negative_abstract01 in issue #5366.
Diffstat (limited to 'src/zap/zapinfo.cpp')
-rw-r--r--src/zap/zapinfo.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/zap/zapinfo.cpp b/src/zap/zapinfo.cpp
index c918fcb02d..831c61b4b2 100644
--- a/src/zap/zapinfo.cpp
+++ b/src/zap/zapinfo.cpp
@@ -3434,6 +3434,9 @@ bool ZapInfo::getReadyToRunHelper(CORINFO_RESOLVED_TOKEN * pResolvedToken,
switch (id)
{
case CORINFO_HELP_READYTORUN_NEW:
+ // Call CEEInfo::getNewHelper to validate the request (e.g., check for abstract class).
+ m_pEEJitInfo->getNewHelper(pResolvedToken, m_currentMethodHandle);
+
if ((getClassAttribs(pResolvedToken->hClass) & CORINFO_FLG_SHAREDINST) != 0)
return false; // Requires runtime lookup.
pImport = m_pImage->GetImportTable()->GetDynamicHelperCell(