projects
/
mono.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
e91a66f
)
[verifier] Base constructors can only be called on uninit'd this pointers. Fix #12157.
author
Rodrigo Kumpera
<kumpera@gmail.com>
Fri, 18 Aug 2017 22:00:45 +0000
(15:00 -0700)
committer
Rodrigo Kumpera
<kumpera@gmail.com>
Fri, 18 Aug 2017 22:00:45 +0000
(15:00 -0700)
mono/metadata/verify.c
patch
|
blob
|
history
diff --git
a/mono/metadata/verify.c
b/mono/metadata/verify.c
index 3677d9e4b7000a26e269aebc690e625978725d77..fa38edffc031b768aa6ef39b683e33ace1408eae 100644
(file)
--- a/
mono/metadata/verify.c
+++ b/
mono/metadata/verify.c
@@
-3227,6
+3227,8
@@
do_invoke_method (VerifyContext *ctx, int method_token, gboolean virtual_)
value = stack_pop_safe (ctx);
if (IS_STRICT_MODE (ctx) && (value->stype & THIS_POINTER_MASK) != THIS_POINTER_MASK)
CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Invalid 'this ptr' argument for constructor at 0x%04x", ctx->ip_offset));
+ if (!(value->stype & UNINIT_THIS_MASK))
+ CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Calling the base constructor on an initialized this pointer at 0x%04x", ctx->ip_offset));
} else {
value = stack_pop (ctx);
}