Merge pull request #3547 from cmp-/remove-obsolete-stack-checks-win32
[mono.git] / mcs / class / corlib / System.Security / SecurityException.cs
index ef82519493388b5010642ddfb0d7fcacae5acb44..329b6fe3378802efab1294626766d697820dfc02 100644 (file)
@@ -40,29 +40,29 @@ using System.Text;
 namespace System.Security {
 
        [Serializable]
-#if NET_2_0
-       [ComVisible (true)]
-#endif
+       [ComVisible (true)]
        public class SecurityException : SystemException {
                // Fields
                string permissionState;
                Type permissionType;
                private string _granted;
                private string _refused;
-               private SecurityAction _action;
                private object _demanded;
+               private IPermission _firstperm;
+//             private IPermission _permfailed;
+               private MethodInfo _method;
+#if !MOBILE
+               private Evidence _evidence;
+#endif
+               private SecurityAction _action;
                private object _denyset;
                private object _permitset;
                private AssemblyName _assembly;
-               private IPermission _firstperm;
-               private IPermission _permfailed;
-               private MethodInfo _method;
                private string _url;
                private SecurityZone _zone;
-
+               
                // Properties
 
-#if NET_2_0
                [ComVisible (false)]
                public SecurityAction Action {
                        get { return _action; }
@@ -107,26 +107,15 @@ namespace System.Security {
                        get { return _zone; }
                        set { _zone = value; }
                }
-#endif
 
-#if NET_2_0
                [ComVisible (false)]
-               public 
-#else
-               internal
-#endif
-               object Demanded {
+               public object Demanded {
                        [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
                        get { return _demanded; }
                        set { _demanded = value; }
                }
 
-#if NET_2_0
-               public 
-#else
-               internal
-#endif
-               IPermission FirstPermissionThatFailed {
+               public IPermission FirstPermissionThatFailed {
                        [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
                        get { return _firstperm; }
                        set { _firstperm = value; }
@@ -135,41 +124,31 @@ namespace System.Security {
                public string PermissionState {
                        [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
                        get { return permissionState; }
-#if NET_2_0
                        set { permissionState = value; }
-#endif
                }
 
                public Type PermissionType {
                        get { return permissionType; }
-#if NET_2_0
                        set { permissionType = value; }
-#endif
                }
 
-#if NET_1_1
                public string GrantedSet {
                        [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
                        get { return _granted; }
-#if NET_2_0
                        set { _granted = value; }
-#endif
                }
 
                public string RefusedSet {
                        [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
                        get { return _refused; }
-#if NET_2_0
                        set { _refused = value; }
-#endif
                }
-#endif
+
                // Constructors
 
                public SecurityException ()
-                       : base (Locale.GetText ("A security error has been detected."))
+                       : this (Locale.GetText ("A security error has been detected."))
                {
-                       base.HResult = unchecked ((int)0x8013150A);
                }
 
                public SecurityException (string message) 
@@ -222,12 +201,7 @@ namespace System.Security {
                        _refused = refused.ToString ();
                }
 
-#if NET_2_0
-               public
-#else
-               internal
-#endif
-               SecurityException (string message, object deny, object permitOnly, MethodInfo method, 
+               public SecurityException (string message, object deny, object permitOnly, MethodInfo method, 
                        object demanded, IPermission permThatFailed)
                        : base (message)
                {
@@ -238,13 +212,8 @@ namespace System.Security {
                        _demanded = demanded;
                        _firstperm = permThatFailed;
                }
-
-#if NET_2_0
-               public
-#else
-               internal
-#endif
-               SecurityException (string message, AssemblyName assemblyName, PermissionSet grant, 
+#if !MOBILE
+               public SecurityException (string message, AssemblyName assemblyName, PermissionSet grant, 
                        PermissionSet refused, MethodInfo method, SecurityAction action, object demanded, 
                        IPermission permThatFailed, Evidence evidence)
                        : base (message)
@@ -259,15 +228,15 @@ namespace System.Security {
                        _firstperm = permThatFailed;
                        if (_firstperm != null)
                                permissionType = _firstperm.GetType ();
-                       // FIXME ? evidence ?
+                       _evidence = evidence;
                }
-
+#endif
                // Methods
                public override void GetObjectData (SerializationInfo info, StreamingContext context)
                {
                        base.GetObjectData (info, context);
                        try {
-                               info.AddValue ("PermissionState", PermissionState);
+                               info.AddValue ("PermissionState", permissionState);
                        }
                        catch (SecurityException) {
                                // serialize only if permitted to do so
@@ -276,6 +245,9 @@ namespace System.Security {
 
                public override string ToString ()
                {
+#if MOBILE
+                       return base.ToString ();
+#else
                        StringBuilder sb = new StringBuilder (base.ToString ());
                        try {
                                if (permissionType != null) {
@@ -303,11 +275,20 @@ namespace System.Security {
                                if (_firstperm != null) {
                                        sb.AppendFormat ("{0}Failed Permission: {1}", Environment.NewLine, FirstPermissionThatFailed);
                                }
+                               if (_evidence != null) {
+                                       sb.AppendFormat ("{0}Evidences:", Environment.NewLine);
+                                       foreach (object o in _evidence) {
+                                               // Hash evidence is way much too verbose to be useful to anyone
+                                               if (!(o is Hash))
+                                                       sb.AppendFormat ("{0}\t{1}", Environment.NewLine, o);
+                                       }
+                               }
                        }
                        catch (SecurityException) {
                                // some informations can't be displayed
                        }
                        return sb.ToString ();
+#endif
                }
        }
 }