Skip to content

Commit

Permalink
[interp] Add null checks to STIND opcodes. (dotnet#40041)
Browse files Browse the repository at this point in the history
  • Loading branch information
vargaz authored and Jacksondr5 committed Aug 10, 2020
1 parent a7a55c6 commit 876448c
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/mono/mono/mini/interp/interp.c
Original file line number Diff line number Diff line change
Expand Up @@ -4592,31 +4592,37 @@ interp_exec_method (InterpFrame *frame, ThreadContext *context, FrameClauseArgs
MINT_IN_BREAK;
}
MINT_IN_CASE(MINT_STIND_REF)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
mono_gc_wbarrier_generic_store_internal (sp->data.p, sp [1].data.o);
MINT_IN_BREAK;
MINT_IN_CASE(MINT_STIND_I1)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
* (gint8 *) sp->data.p = (gint8)sp[1].data.i;
MINT_IN_BREAK;
MINT_IN_CASE(MINT_STIND_I2)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
* (gint16 *) sp->data.p = (gint16)sp[1].data.i;
MINT_IN_BREAK;
MINT_IN_CASE(MINT_STIND_I4)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
* (gint32 *) sp->data.p = sp[1].data.i;
MINT_IN_BREAK;
MINT_IN_CASE(MINT_STIND_I)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
* (mono_i *) sp->data.p = (mono_i)sp[1].data.p;
MINT_IN_BREAK;
MINT_IN_CASE(MINT_STIND_I8)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
#ifdef NO_UNALIGNED_ACCESS
Expand All @@ -4627,11 +4633,13 @@ interp_exec_method (InterpFrame *frame, ThreadContext *context, FrameClauseArgs
* (gint64 *) sp->data.p = sp[1].data.l;
MINT_IN_BREAK;
MINT_IN_CASE(MINT_STIND_R4)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
* (float *) sp->data.p = sp[1].data.f_r4;
MINT_IN_BREAK;
MINT_IN_CASE(MINT_STIND_R8)
NULL_CHECK (sp [-2].data.p);
++ip;
sp -= 2;
#ifdef NO_UNALIGNED_ACCESS
Expand Down

0 comments on commit 876448c

Please sign in to comment.