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