Author: kumpera
Date: 2008-01-21 13:30:52 -0500 (Mon, 21 Jan 2008)
New Revision: 93431
Modified:
trunk/mono/mono/metadata/ChangeLog
trunk/mono/mono/metadata/verify.c
Log:
2008-01-21 Rodrigo Kumpera <[EMAIL PROTECTED]>
* verify.c (do_load_function_ptr): add visibility check.
Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog 2008-01-21 18:27:38 UTC (rev 93430)
+++ trunk/mono/mono/metadata/ChangeLog 2008-01-21 18:30:52 UTC (rev 93431)
@@ -1,4 +1,8 @@
-2008-1-21 Massimiliano Mantione <[EMAIL PROTECTED]>
+2008-01-21 Rodrigo Kumpera <[EMAIL PROTECTED]>
+
+ * verify.c (do_load_function_ptr): add visibility check.
+
+2008-01-21 Massimiliano Mantione <[EMAIL PROTECTED]>
*class.c:
mono_generic_class_get_class: hook profiler events.
mono_field_get_offset: added to support heap-shot in the new profiler.
Modified: trunk/mono/mono/metadata/verify.c
===================================================================
--- trunk/mono/mono/metadata/verify.c 2008-01-21 18:27:38 UTC (rev 93430)
+++ trunk/mono/mono/metadata/verify.c 2008-01-21 18:30:52 UTC (rev 93431)
@@ -3476,7 +3476,6 @@
}
}
-/*TODO add visibility checks*/
static void
do_load_function_ptr (VerifyContext *ctx, guint32 token, gboolean virtual)
{
@@ -3516,6 +3515,9 @@
if (!verify_type_compatibility (ctx, &method->klass->byval_arg,
top->type))
CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Unexpected
object for ldvirtftn at 0x%04x", ctx->ip_offset));
}
+
+ if (!mono_method_can_access_method (ctx->method, method))
+ CODE_NOT_VERIFIABLE (ctx, g_strdup_printf ("Loaded method is
not visible for ldftn/ldvirtftn at 0x%04x", ctx->ip_offset));
top = stack_push_val(ctx, TYPE_PTR,
mono_type_create_fnptr_from_mono_method (ctx, method));
top->method = method;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches