summaryrefslogtreecommitdiff
path: root/src/vm/ceeload.cpp
diff options
context:
space:
mode:
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>2019-03-06 19:23:44 +0100
committerJan Kotas <jkotas@microsoft.com>2019-03-06 10:23:44 -0800
commit326b25a658e87a122708d5ce1f4d997c1c1730f5 (patch)
tree2464f0cff7741341a46647595b6bec4b7fab8d6c /src/vm/ceeload.cpp
parent5ce4140ca10cdda9af170d5215ff9de295c58a30 (diff)
downloadcoreclr-326b25a658e87a122708d5ce1f4d997c1c1730f5.tar.gz
coreclr-326b25a658e87a122708d5ce1f4d997c1c1730f5.tar.bz2
coreclr-326b25a658e87a122708d5ce1f4d997c1c1730f5.zip
Improve resiliency of LoadIBCMethodHelper (#23057)
The encoded slot could be bogus and we would end up asserting for this.
Diffstat (limited to 'src/vm/ceeload.cpp')
-rw-r--r--src/vm/ceeload.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/vm/ceeload.cpp b/src/vm/ceeload.cpp
index 6d1643b46e..cd46cffaaa 100644
--- a/src/vm/ceeload.cpp
+++ b/src/vm/ceeload.cpp
@@ -7442,6 +7442,11 @@ MethodDesc* Module::LoadIBCMethodHelper(DataImage *image, CORBBTPROF_BLOB_PARAM_
DWORD slot;
IfFailThrow(p.GetData(&slot));
+ if (slot >= pOwnerMT->GetNumVtableSlots())
+ {
+ COMPlusThrow(kTypeLoadException, IDS_IBC_MISSING_EXTERNAL_METHOD);
+ }
+
pMethod = pOwnerMT->GetMethodDescForSlot(slot);
}
else // otherwise we use the normal metadata MethodDef token encoding and we handle ibc tokens.