Author: spouliot
Date: 2005-05-26 08:34:41 -0400 (Thu, 26 May 2005)
New Revision: 45039

Modified:
   trunk/mcs/class/corlib/System.Security/ChangeLog
   trunk/mcs/class/corlib/System.Security/CodeAccessPermission.cs
   trunk/mcs/class/corlib/System.Security/PermissionSet.cs
   trunk/mcs/class/corlib/System.Security/SecurityContext.cs
Log:
2005-05-26  Sebastien Pouliot  <[EMAIL PROTECTED]>

        * CodeAccessPermission.cs: Fix typo for PermitOnly. Added ComVisible 
        attribute for NET_2_0 profile.
        * PermissionSet.cs: Changed static string to const. Added ComVisible 
        attribute for NET_2_0 profile.
        * SecurityContext.cs: Capture the identity token but don't create a 
        WindowsIdentity instance unless required (e.g. Run). This requires 
        less privileges (so it runs better that way under CAS).



Modified: trunk/mcs/class/corlib/System.Security/ChangeLog
===================================================================
--- trunk/mcs/class/corlib/System.Security/ChangeLog    2005-05-26 12:22:33 UTC 
(rev 45038)
+++ trunk/mcs/class/corlib/System.Security/ChangeLog    2005-05-26 12:34:41 UTC 
(rev 45039)
@@ -1,3 +1,13 @@
+2005-05-26  Sebastien Pouliot  <[EMAIL PROTECTED]>
+
+       * CodeAccessPermission.cs: Fix typo for PermitOnly. Added ComVisible 
+       attribute for NET_2_0 profile.
+       * PermissionSet.cs: Changed static string to const. Added ComVisible 
+       attribute for NET_2_0 profile.
+       * SecurityContext.cs: Capture the identity token but don't create a 
+       WindowsIdentity instance unless required (e.g. Run). This requires 
+       less privileges (so it runs better that way under CAS).
+
 2005-05-25  Sebastien Pouliot  <[EMAIL PROTECTED]>
 
        * SecurityException.cs: PermissionState isn't always serialized 

Modified: trunk/mcs/class/corlib/System.Security/CodeAccessPermission.cs
===================================================================
--- trunk/mcs/class/corlib/System.Security/CodeAccessPermission.cs      
2005-05-26 12:22:33 UTC (rev 45038)
+++ trunk/mcs/class/corlib/System.Security/CodeAccessPermission.cs      
2005-05-26 12:34:41 UTC (rev 45039)
@@ -43,6 +43,9 @@
 
        [Serializable]
        [SecurityPermission (SecurityAction.InheritanceDemand, ControlEvidence 
= true, ControlPolicy = true)]
+#if NET_2_0
+       [ComVisible (true)]
+#endif
        public abstract class CodeAccessPermission : IPermission, 
ISecurityEncodable, IStackWalk {
 
                protected CodeAccessPermission ()
@@ -176,7 +179,7 @@
                                // TODO
                                throw new NotSupportedException ("Currently 
only declarative Deny are supported.");
                        }
-                       if ((sf.PermitOnly != null) && 
sf.PermitOnly.DeclarativeSecurity) {
+                       if ((sf.PermitOnly != null) && 
!sf.PermitOnly.DeclarativeSecurity) {
                                revert = true;
                                // TODO
                                throw new NotSupportedException ("Currently 
only declarative PermitOnly are supported.");

Modified: trunk/mcs/class/corlib/System.Security/PermissionSet.cs
===================================================================
--- trunk/mcs/class/corlib/System.Security/PermissionSet.cs     2005-05-26 
12:22:33 UTC (rev 45038)
+++ trunk/mcs/class/corlib/System.Security/PermissionSet.cs     2005-05-26 
12:34:41 UTC (rev 45039)
@@ -46,9 +46,12 @@
        [Serializable]
        // Microsoft public key - i.e. only MS signed assembly can inherit from 
PermissionSet (1.x) or (2.0) FullTrust assemblies
        [StrongNameIdentityPermission (SecurityAction.InheritanceDemand, 
PublicKey="002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293")]
+#if NET_2_0
+       [ComVisible (true)]
+#endif
        public class PermissionSet: ISecurityEncodable, ICollection, 
IEnumerable, IStackWalk, IDeserializationCallback {
 
-               private static string tagName = "PermissionSet";
+               private const string tagName = "PermissionSet";
                private const int version = 1;
                private static object[] psNone = new object [1] { 
PermissionState.None };
 

Modified: trunk/mcs/class/corlib/System.Security/SecurityContext.cs
===================================================================
--- trunk/mcs/class/corlib/System.Security/SecurityContext.cs   2005-05-26 
12:22:33 UTC (rev 45038)
+++ trunk/mcs/class/corlib/System.Security/SecurityContext.cs   2005-05-26 
12:34:41 UTC (rev 45039)
@@ -39,7 +39,7 @@
        internal sealed class SecurityContext {
 #endif
                private bool _capture;
-               private WindowsIdentity _winid;
+               private IntPtr _winid;
                private CompressedStack _stack;
                private bool _suppressFlowWindowsIdentity;
                private bool _suppressFlow;
@@ -75,7 +75,7 @@
 
                        SecurityContext capture = new SecurityContext ();
                        capture._capture = true;
-                       capture._winid = WindowsIdentity.GetCurrent ();
+                       capture._winid = WindowsIdentity.GetCurrentToken ();
                        capture._stack = CompressedStack.Capture ();
                        return capture;
                }
@@ -97,7 +97,7 @@
                        set { _stack = value; }
                }
 
-               internal WindowsIdentity WindowsIdentity {
+               internal IntPtr IdentityToken {
                        get { return _winid; }
                        set { _winid = value; }
                }
@@ -125,6 +125,8 @@
                        sc.WindowsIdentityFlowSuppressed = false;
                }
 #if NET_2_0
+               // if you got the context then you can use it
+               [SecurityPermission (SecurityAction.Assert, ControlPrincipal = 
true)]
                [SecurityPermission (SecurityAction.LinkDemand, Infrastructure 
= true)]
                static public void Run (SecurityContext securityContext, 
ContextCallback callBack, object state)
                {
@@ -136,13 +138,14 @@
                        SecurityContext sc = 
Thread.CurrentThread.ExecutionContext.SecurityContext;
                        IPrincipal original = Thread.CurrentPrincipal;
                        try {
-                               if (sc.WindowsIdentity != null)
-                                       Thread.CurrentPrincipal = new 
WindowsPrincipal (sc.WindowsIdentity);
+                               if (sc.IdentityToken != IntPtr.Zero) {
+                                       Thread.CurrentPrincipal = new 
WindowsPrincipal (new WindowsIdentity (sc.IdentityToken));
+                               }
 
                                CompressedStack.Run 
(securityContext.CompressedStack, callBack, state);
                        }
                        finally {
-                               if ((original != null) && (sc.WindowsIdentity 
!= null))
+                               if ((original != null) && (sc.IdentityToken != 
IntPtr.Zero))
                                        Thread.CurrentPrincipal = original;
                        }
                }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to