X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsecurity-manager.c;h=eee0a29458f4c4c85e3c5670f24e967c3082d6c0;hb=7f8a68150cd16aae4e59e49e1524c242da9cdad2;hp=a2382ac49dfe76ad84a9cf20400472ec88292dfe;hpb=c4aef31eeea309e6a795c84c098ac8e1a2490340;p=mono.git diff --git a/mono/metadata/security-manager.c b/mono/metadata/security-manager.c index a2382ac49df..eee0a29458f 100644 --- a/mono/metadata/security-manager.c +++ b/mono/metadata/security-manager.c @@ -4,7 +4,7 @@ * Author: * Sebastien Pouliot * - * Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com) + * Copyright 2005-2009 Novell, Inc (http://www.novell.com) */ #include "security-manager.h" @@ -16,10 +16,23 @@ static MonoSecurityManager secman; static MonoBoolean mono_security_manager_activated = FALSE; static MonoBoolean mono_security_manager_enabled = TRUE; static MonoBoolean mono_security_manager_execution = TRUE; +static MonoSecurityMode mono_security_mode = MONO_SECURITY_MODE_NONE; /* Public stuff */ +void +mono_security_set_mode (MonoSecurityMode mode) +{ + mono_security_mode = mode; +} + +MonoSecurityMode +mono_security_get_mode (void) +{ + return mono_security_mode; +} + MonoSecurityManager* mono_security_manager_get_methods (void) { @@ -67,7 +80,7 @@ mono_security_manager_get_methods (void) g_assert (secman.linkdemandfulltrust); secman.linkdemandsecurityexception = mono_class_get_method_from_name (secman.securitymanager, - "LinkDemandSecurityException", 3); + "LinkDemandSecurityException", 2); g_assert (secman.linkdemandsecurityexception); secman.allowpartiallytrustedcallers = mono_class_from_name (mono_defaults.corlib, "System.Security", @@ -118,8 +131,7 @@ mono_secman_inheritancedemand_class (MonoClass *klass, MonoClass *parent) /* If so check the demands on the klass (inheritor) */ if (!mono_secman_inheritance_check (klass, &demands)) { /* Keep flags in MonoClass to be able to throw a SecurityException later (if required) */ - klass->exception_type = MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND; - klass->exception_data = NULL; + mono_class_set_failure (klass, MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND, NULL); } } } @@ -143,8 +155,7 @@ mono_secman_inheritancedemand_method (MonoMethod *override, MonoMethod *base) /* If so check the demands on the overriding method */ if (!mono_secman_inheritance_check (override->klass, &demands)) { /* Keep flags in MonoClass to be able to throw a SecurityException later (if required) */ - override->klass->exception_type = MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND; - override->klass->exception_data = base; + mono_class_set_failure (override->klass, MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND, base); } } } @@ -259,7 +270,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); }