2006-09-12 Martin Baulig <martin@ximian.com>
[mono.git] / mono / metadata / security-manager.c
index 9b76c939a70a8befa8d61e3202722fdb150f87bb..fb263c45ac6b992113fb3a8e4d8252c4f51b9436 100644 (file)
@@ -47,7 +47,7 @@ mono_security_manager_get_methods (void)
        g_assert (secman.demandunmanaged);
 
        secman.inheritancedemand = mono_class_get_method_from_name (secman.securitymanager,
-               "InheritanceDemand", 2);        
+               "InheritanceDemand", 3);        
        g_assert (secman.inheritancedemand);
 
        secman.inheritsecurityexception = mono_class_get_method_from_name (secman.securitymanager,
@@ -89,10 +89,11 @@ mono_secman_inheritance_check (MonoClass *klass, MonoDeclSecurityActions *demand
        MonoAssembly *assembly = mono_image_get_assembly (klass->image);
        MonoReflectionAssembly *refass = mono_assembly_get_object (domain, assembly);
        MonoObject *res;
-       gpointer args [2];
+       gpointer args [3];
 
-       args [0] = refass;
-       args [1] = demands;
+       args [0] = domain->domain;
+       args [1] = refass;
+       args [2] = demands;
 
        res = mono_runtime_invoke (secman->inheritancedemand, NULL, args, NULL);
        return (*(MonoBoolean *) mono_object_unbox (res));
@@ -258,7 +259,7 @@ ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (MonoReflectionM
 {
        MonoMethod *method = m->method;
        /* we want the original as the wrapper is "free" of the security informations */
-       if (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
+       if (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE || method->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED) {
                method = mono_marshal_method_from_wrapper (method);
        }