Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Pouliot <sebastien@ximian.com>2003-12-30 07:07:48 +0300
committerSebastien Pouliot <sebastien@ximian.com>2003-12-30 07:07:48 +0300
commit24c965fc2f40cbabb4d486a2f96fb7c572c7d4b5 (patch)
tree81404c23327c098a5f9f91a53be967646d80c14b /mcs/class/corlib/System.Security.Permissions
parent1eb7770a063761db26fc968827cc7440cf611324 (diff)
2003-12-29 Sebastien Pouliot <spouliot@videotron.ca>
* EnvironmentPermission.cs: Fixed return value to match unit tests. * EnvironmentPermissionAttribute.cs: Updated CreatePermission for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * FileDialogPermissionAttribute.cs: Updated CreatePermission for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * FileIOPermissionAttribute.cs: Updated CreatePermission for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * IsolatedStorageFilePermissionAttribute.cs: Implemented CreatePermission method. Updated AttributeUsage using 1.2 documentation. * IsolatedStoragePermissionAttribute.cs: Updated AttributeUsage using 1.2 documentation. * PermissionSetAttribute.cs: Prepared CreatePermissionSet. Updated AttributeUsage using 1.2 documentation. * PrincipalPermissionAttribute.cs: Updated CreatePermission for Unrestricted permission. Fixed AttributeUsage (more limited than others). * PublisherIdentityPermissionAttribute.cs: Updated CreatePermission to throw ArgumentException for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * ReflectionPermissionAttribute.cs: Updated CreatePermission for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * RegistryPermission.cs: Implemented IsUnrestricted for unit tests. * RegistryPermissionAttribute.cs: Implemented CreatePermission method. Updated AttributeUsage using 1.2 documentation. * SecurityAttribute.cs: m_Action is now assigned in constructor. * SecurityPermission.cs: Completed class. * SecurityPermissionAttribute.cs: Updated CreatePermission for Unrestricted permission. Added missing [Serializable] attribute and UnmanagedCode property. Changed -= to &= to preserve flags (e.g. setting a flags to false more than one time). * SecurityPermissionFlag.cs: Cleanup unused XML tags. * SiteIdentityPermission.cs: Fixed exception for constructor and Site property to match unit tests. * SiteIdentityPermissionAttribute.cs: Updated CreatePermission for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * StrongNameIdentityPermission.cs: Fixed default values for Name and Version to match unit tests. * StrongNamePermissionAttribute.cs: Updated CreatePermission to throw ArgumentException for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * UIPermission.cs: Fixed default values in constructor to match unit tests. * UIPermissionAttribute.cs: Updated CreatePermission to throw ArgumentException for Unrestricted permission. Fixed strange case for null URL. Updated AttributeUsage using 1.2 documentation. * UrlIdentityPermission.cs: Url property now throws an exception to match unit tests. * UrlIdentityPermissionAttribute.cs: Updated CreatePermission to throw ArgumentException for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. * ZoneIdentityPermissionAttribute.cs: Updated CreatePermission to throw ArgumentException for Unrestricted permission. Updated AttributeUsage using 1.2 documentation. svn path=/trunk/mcs/; revision=21543
Diffstat (limited to 'mcs/class/corlib/System.Security.Permissions')
-rw-r--r--mcs/class/corlib/System.Security.Permissions/ChangeLog55
-rw-r--r--mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs2
-rw-r--r--mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs20
-rw-r--r--mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs21
-rw-r--r--mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs28
-rw-r--r--mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs22
-rw-r--r--mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs77
-rw-r--r--mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs27
-rw-r--r--mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs13
-rw-r--r--mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs6
-rw-r--r--mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs10
-rw-r--r--mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs17
-rw-r--r--mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs42
-rw-r--r--mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs119
-rw-r--r--mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs71
-rw-r--r--mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs451
-rwxr-xr-xmcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs20
-rw-r--r--mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs8
-rw-r--r--mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs13
-rw-r--r--mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs4
-rw-r--r--mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs31
-rw-r--r--mcs/class/corlib/System.Security.Permissions/UIPermission.cs4
-rw-r--r--mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs9
-rw-r--r--mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs6
-rw-r--r--mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs26
-rw-r--r--mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs16
26 files changed, 672 insertions, 446 deletions
diff --git a/mcs/class/corlib/System.Security.Permissions/ChangeLog b/mcs/class/corlib/System.Security.Permissions/ChangeLog
index 3e03538cc09..71a6e43c2cb 100644
--- a/mcs/class/corlib/System.Security.Permissions/ChangeLog
+++ b/mcs/class/corlib/System.Security.Permissions/ChangeLog
@@ -1,3 +1,58 @@
+2003-12-29 Sebastien Pouliot <spouliot@videotron.ca>
+
+ * EnvironmentPermission.cs: Fixed return value to match unit tests.
+ * EnvironmentPermissionAttribute.cs: Updated CreatePermission for
+ Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
+ * FileDialogPermissionAttribute.cs: Updated CreatePermission for
+ Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
+ * FileIOPermissionAttribute.cs: Updated CreatePermission for
+ Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
+ * IsolatedStorageFilePermissionAttribute.cs: Implemented
+ CreatePermission method. Updated AttributeUsage using 1.2 documentation.
+ * IsolatedStoragePermissionAttribute.cs: Updated AttributeUsage using
+ 1.2 documentation.
+ * PermissionSetAttribute.cs: Prepared CreatePermissionSet. Updated
+ AttributeUsage using 1.2 documentation.
+ * PrincipalPermissionAttribute.cs: Updated CreatePermission for
+ Unrestricted permission. Fixed AttributeUsage (more limited than others).
+ * PublisherIdentityPermissionAttribute.cs: Updated CreatePermission to
+ throw ArgumentException for Unrestricted permission. Updated
+ AttributeUsage using 1.2 documentation.
+ * ReflectionPermissionAttribute.cs: Updated CreatePermission for
+ Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
+ * RegistryPermission.cs: Implemented IsUnrestricted for unit tests.
+ * RegistryPermissionAttribute.cs: Implemented CreatePermission method.
+ Updated AttributeUsage using 1.2 documentation.
+ * SecurityAttribute.cs: m_Action is now assigned in constructor.
+ * SecurityPermission.cs: Completed class.
+ * SecurityPermissionAttribute.cs: Updated CreatePermission for
+ Unrestricted permission. Added missing [Serializable] attribute and
+ UnmanagedCode property. Changed -= to &= to preserve flags (e.g.
+ setting a flags to false more than one time).
+ * SecurityPermissionFlag.cs: Cleanup unused XML tags.
+ * SiteIdentityPermission.cs: Fixed exception for constructor and Site
+ property to match unit tests.
+ * SiteIdentityPermissionAttribute.cs: Updated CreatePermission for
+ Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
+ * StrongNameIdentityPermission.cs: Fixed default values for Name and
+ Version to match unit tests.
+ * StrongNamePermissionAttribute.cs: Updated CreatePermission to
+ throw ArgumentException for Unrestricted permission. Updated
+ AttributeUsage using 1.2 documentation.
+ * UIPermission.cs: Fixed default values in constructor to match unit
+ tests.
+ * UIPermissionAttribute.cs: Updated CreatePermission to throw
+ ArgumentException for Unrestricted permission. Fixed strange case for
+ null URL. Updated AttributeUsage using 1.2 documentation.
+ * UrlIdentityPermission.cs: Url property now throws an exception to
+ match unit tests.
+ * UrlIdentityPermissionAttribute.cs: Updated CreatePermission to throw
+ ArgumentException for Unrestricted permission. Updated AttributeUsage
+ using 1.2 documentation.
+ * ZoneIdentityPermissionAttribute.cs: Updated CreatePermission to throw
+ ArgumentException for Unrestricted permission. Updated AttributeUsage
+ using 1.2 documentation.
+
2003-08-05 Duncan Mak <duncan@ximian.com>
* FileIOPermission.cs (GetTokenIndex): Add implementation for
diff --git a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs
index 2e0ea8bb10f..175251958ef 100644
--- a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs
@@ -152,7 +152,7 @@ namespace System.Security.Permissions {
int n = result.Length;
if (n > 0)
return result.Substring (0, n - 1);
- return null;
+ return ((_state == PermissionState.Unrestricted) ? String.Empty : null);
}
public override IPermission Intersect (IPermission target)
diff --git a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs
index 2b541f5c105..036928b52cf 100644
--- a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs
@@ -10,13 +10,12 @@
//
using System;
-using System.Security.Permissions;
namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class EnvironmentPermissionAttribute : CodeAccessSecurityAttribute {
@@ -51,12 +50,17 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
- EnvironmentPermission p = new EnvironmentPermission (PermissionState.None);
- if (read != null)
- p.AddPathList (EnvironmentPermissionAccess.Read, read);
- if (write != null)
- p.AddPathList (EnvironmentPermissionAccess.Write, write);
- return p;
+ EnvironmentPermission perm = null;
+ if (this.Unrestricted)
+ perm = new EnvironmentPermission (PermissionState.Unrestricted);
+ else {
+ perm = new EnvironmentPermission (PermissionState.None);
+ if (read != null)
+ perm.AddPathList (EnvironmentPermissionAccess.Read, read);
+ if (write != null)
+ perm.AddPathList (EnvironmentPermissionAccess.Write, write);
+ }
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs
index b67607b7827..90939160d8e 100644
--- a/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs
@@ -10,13 +10,12 @@
//
using System;
-using System.Security.Permissions;
namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class FileDialogPermissionAttribute : CodeAccessSecurityAttribute {
@@ -41,12 +40,18 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
- FileDialogPermissionAccess access = FileDialogPermissionAccess.None;
- if (canOpen)
- access |= FileDialogPermissionAccess.Open;
- if (canSave)
- access |= FileDialogPermissionAccess.Save;
- return new FileDialogPermission (access);
+ FileDialogPermission perm = null;
+ if (this.Unrestricted)
+ perm = new FileDialogPermission (PermissionState.Unrestricted);
+ else {
+ FileDialogPermissionAccess access = FileDialogPermissionAccess.None;
+ if (canOpen)
+ access |= FileDialogPermissionAccess.Open;
+ if (canSave)
+ access |= FileDialogPermissionAccess.Save;
+ perm = new FileDialogPermission (access);
+ }
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs
index 76f8785278f..a16b1656e47 100644
--- a/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs
@@ -10,13 +10,12 @@
//
using System;
-using System.Security.Permissions;
namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class FileIOPermissionAttribute : CodeAccessSecurityAttribute {
@@ -70,16 +69,21 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
- FileIOPermission p = new FileIOPermission (PermissionState.None);
- if (append != null)
- p.AddPathList (FileIOPermissionAccess.Append, append);
- if (path != null)
- p.AddPathList (FileIOPermissionAccess.PathDiscovery, path);
- if (read != null)
- p.AddPathList (FileIOPermissionAccess.Read, read);
- if (write != null)
- p.AddPathList (FileIOPermissionAccess.Write, write);
- return p;
+ FileIOPermission perm = null;
+ if (this.Unrestricted)
+ perm = new FileIOPermission (PermissionState.Unrestricted);
+ else {
+ perm = new FileIOPermission (PermissionState.None);
+ if (append != null)
+ perm.AddPathList (FileIOPermissionAccess.Append, append);
+ if (path != null)
+ perm.AddPathList (FileIOPermissionAccess.PathDiscovery, path);
+ if (read != null)
+ perm.AddPathList (FileIOPermissionAccess.Read, read);
+ if (write != null)
+ perm.AddPathList (FileIOPermissionAccess.Write, write);
+ }
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs
index a9a879f06fc..691701c844b 100644
--- a/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs
@@ -1,20 +1,21 @@
//
// System.Security.Permissions.IsolatedStorageFilePermissionAttribute.cs
//
-// Duncan Mak <duncan@ximian.com>
+// Authors
+// Duncan Mak <duncan@ximian.com>
+// Sebastien Pouliot (spouliot@motus.com)
//
// (C) 2002 Ximian, Inc. http://www.ximian.com
+// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
//
using System;
-using System.Security.Permissions;
-namespace System.Security.Permissions
-{
+namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class IsolatedStorageFilePermissionAttribute : IsolatedStoragePermissionAttribute
{
@@ -25,10 +26,17 @@ namespace System.Security.Permissions
}
// Methods
- [MonoTODO]
public override IPermission CreatePermission ()
{
- return null;
+ IsolatedStorageFilePermission perm = null;
+ if (this.Unrestricted)
+ perm = new IsolatedStorageFilePermission (PermissionState.Unrestricted);
+ else {
+ perm = new IsolatedStorageFilePermission (PermissionState.None);
+ perm.UsageAllowed = this.UsageAllowed;
+ perm.UserQuota = this.UserQuota;
+ }
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs
index c6da340b529..c99c088ccc4 100644
--- a/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs
@@ -1,39 +1,38 @@
-//
-// System.Security.Permissions.IsolatedStoragePermissionAttributes.cs
-//
-// Author:
-// Dan Lewis (dihlewis@yahoo.co.uk)
-//
-// (C) 2002
-//
-
-using System;
-using System.Security.Permissions;
-
-namespace System.Security.Permissions {
-
- [AttributeUsage ( AttributeTargets.Assembly | AttributeTargets.Class |
- AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
- [Serializable]
- public abstract class IsolatedStoragePermissionAttribute : CodeAccessSecurityAttribute {
-
- public IsolatedStoragePermissionAttribute (SecurityAction action) : base (action) {
- }
-
- public IsolatedStorageContainment UsageAllowed {
- get { return usage_allowed; }
- set { usage_allowed = value; }
- }
-
- public long UserQuota {
- get { return user_quota; }
- set { user_quota = value; }
- }
-
- // private
-
- private IsolatedStorageContainment usage_allowed;
- private long user_quota;
- }
-}
+//
+// System.Security.Permissions.IsolatedStoragePermissionAttributes.cs
+//
+// Author:
+// Dan Lewis (dihlewis@yahoo.co.uk)
+//
+// (C) 2002
+//
+
+using System;
+
+namespace System.Security.Permissions {
+
+ [AttributeUsage ( AttributeTargets.Assembly | AttributeTargets.Class |
+ AttributeTargets.Struct | AttributeTargets.Constructor |
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
+ [Serializable]
+ public abstract class IsolatedStoragePermissionAttribute : CodeAccessSecurityAttribute {
+
+ public IsolatedStoragePermissionAttribute (SecurityAction action) : base (action) {
+ }
+
+ public IsolatedStorageContainment UsageAllowed {
+ get { return usage_allowed; }
+ set { usage_allowed = value; }
+ }
+
+ public long UserQuota {
+ get { return user_quota; }
+ set { user_quota = value; }
+ }
+
+ // private
+
+ private IsolatedStorageContainment usage_allowed;
+ private long user_quota;
+ }
+}
diff --git a/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs b/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs
index ee654f7e00b..2d91a1dd10d 100644
--- a/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs
@@ -7,16 +7,15 @@
//
using System;
-using System.Security.Permissions;
-namespace System.Security.Permissions
-{
+namespace System.Security.Permissions {
+
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
- public sealed class PermissionSetAttribute : CodeAccessSecurityAttribute
- {
+ public sealed class PermissionSetAttribute : CodeAccessSecurityAttribute {
+
// Fields
private string file;
private string name;
@@ -52,7 +51,7 @@ namespace System.Security.Permissions
{
get { return xml; }
set { xml = value; }
- }
+ }
// Methods
public override IPermission CreatePermission ()
@@ -63,7 +62,19 @@ namespace System.Security.Permissions
[MonoTODO]
public PermissionSet CreatePermissionSet ()
{
- return null;
+ PermissionSet pset = null;
+ if (this.Unrestricted)
+ pset = new PermissionSet (PermissionState.Unrestricted);
+ else {
+ pset = new PermissionSet (PermissionState.None);
+ if (name != null) {
+ }
+ else if (file != null) {
+ }
+ else if (xml != null) {
+ }
+ }
+ return pset;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs
index 85dcca5faf9..bd7609488c4 100644
--- a/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs
@@ -7,13 +7,10 @@
//
using System;
-using System.Security.Permissions;
namespace System.Security.Permissions {
- [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
- AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ [AttributeUsage (AttributeTargets.Class | AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class PrincipalPermissionAttribute : CodeAccessSecurityAttribute {
@@ -26,6 +23,7 @@ namespace System.Security.Permissions {
public PrincipalPermissionAttribute (SecurityAction action)
: base (action)
{
+ authenticated = true; // strange but true ;)
}
// Properties
@@ -50,7 +48,12 @@ namespace System.Security.Permissions {
// Method
public override IPermission CreatePermission ()
{
- return new PrincipalPermission (name, role, authenticated);
+ PrincipalPermission perm = null;
+ if (this.Unrestricted)
+ perm = new PrincipalPermission (PermissionState.Unrestricted);
+ else
+ perm = new PrincipalPermission (name, role, authenticated);
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs
index 3d516dd5899..998c20a3e81 100644
--- a/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs
@@ -8,14 +8,13 @@
//
using System;
-using System.Security.Permissions;
using System.Security.Cryptography.X509Certificates;
namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class PublisherIdentityPermissionAttribute : CodeAccessSecurityAttribute {
@@ -53,6 +52,9 @@ namespace System.Security.Permissions {
public override IPermission CreatePermission ()
{
+ if (this.Unrestricted)
+ throw new ArgumentException ("Unsupported PermissionState.Unrestricted");
+
X509Certificate x509 = null;
if (x509data != null) {
byte[] rawcert = new byte [x509data.Length >> 1];
diff --git a/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs
index c17667b7ed7..9c9ef24c397 100644
--- a/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs
@@ -10,13 +10,12 @@
//
using System;
-using System.Security.Permissions;
namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class ReflectionPermissionAttribute : CodeAccessSecurityAttribute {
@@ -80,7 +79,12 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
- return new ReflectionPermission (flags);
+ ReflectionPermission perm = null;
+ if (this.Unrestricted)
+ perm = new ReflectionPermission (PermissionState.Unrestricted);
+ else
+ perm = new ReflectionPermission (flags);
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs b/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs
index 8a81942ba38..068296ad2d1 100644
--- a/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs
@@ -16,6 +16,7 @@ namespace System.Security.Permissions {
public sealed class RegistryPermission
: CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission {
+ private PermissionState _state;
private RegistryPermissionAccess _access;
private string _pathList;
@@ -23,10 +24,13 @@ namespace System.Security.Permissions {
public RegistryPermission (PermissionState state)
{
+ _state = state;
}
public RegistryPermission (RegistryPermissionAccess access, string pathList)
{
+ _state = PermissionState.None;
+ AddPathList (access, pathList);
}
// Properties
@@ -41,6 +45,16 @@ namespace System.Security.Permissions {
[MonoTODO]
public string GetPathList (RegistryPermissionAccess access)
{
+ switch (access) {
+ case RegistryPermissionAccess.Create:
+ break;
+ case RegistryPermissionAccess.Read:
+ break;
+ case RegistryPermissionAccess.Write:
+ break;
+ default:
+ throw new ArgumentException ("Invalid flag");
+ }
return null;
}
@@ -101,10 +115,9 @@ namespace System.Security.Permissions {
return false;
}
- [MonoTODO]
public bool IsUnrestricted ()
{
- return false;
+ return (_state == PermissionState.Unrestricted);
}
public override SecurityElement ToXml ()
diff --git a/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs
index ce8fc5a8e3c..18c3dfcb283 100644
--- a/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs
@@ -1,24 +1,25 @@
//
// System.Security.Permissions.RegistryPermissionAttribute.cs
//
-// Duncan Mak <duncan@ximian.com>
+// Authors
+// Duncan Mak <duncan@ximian.com>
+// Sebastien Pouliot <spouliot@motus.com>
//
// (C) 2002 Ximian, Inc. http://www.ximian.com
+// Portions Copyright (C) 2003 Motus Technologies (http://www.motus.com)
//
using System;
-using System.Security.Permissions;
-namespace System.Security.Permissions
-{
+namespace System.Security.Permissions {
+
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
- public sealed class RegistryPermissionAttribute : CodeAccessSecurityAttribute
- {
+ public sealed class RegistryPermissionAttribute : CodeAccessSecurityAttribute {
+
// Fields
- private string all;
private string create;
private string read;
private string write;
@@ -29,8 +30,14 @@ namespace System.Security.Permissions
// Properties
public string All
{
- set { all = value; }
- get { return all; }
+#if ! NET_1_0
+ get { throw new NotSupportedException ("All"); }
+#endif
+ set {
+ create = value;
+ read = value;
+ write = value;
+ }
}
public string Create
@@ -52,10 +59,21 @@ namespace System.Security.Permissions
}
// Methods
- [MonoTODO]
public override IPermission CreatePermission ()
{
- return null;
+ RegistryPermission perm = null;
+ if (this.Unrestricted)
+ perm = new RegistryPermission (PermissionState.Unrestricted);
+ else {
+ perm = new RegistryPermission (PermissionState.None);
+ if (create != null)
+ perm.AddPathList (RegistryPermissionAccess.Create, create);
+ if (read != null)
+ perm.AddPathList (RegistryPermissionAccess.Read, read);
+ if (write != null)
+ perm.AddPathList (RegistryPermissionAccess.Write, write);
+ }
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs b/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs
index d914835f140..b1844508118 100644
--- a/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs
@@ -1,59 +1,60 @@
-//------------------------------------------------------------------------------
-//
-// System.Security.Permissions.SecurityPermissionAttribute.cs
-//
-// Copyright (C) 2001 Nick Drochak, All Rights Reserved
-//
-// Author: Nick Drochak, ndrochak@gol.com
-// Created: 2002-01-06
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Security.Permissions {
- [System.AttributeUsage(
- System.AttributeTargets.Assembly
- | System.AttributeTargets.Class
- | System.AttributeTargets.Struct
- | System.AttributeTargets.Constructor
- | System.AttributeTargets.Method,
- AllowMultiple=true,
- Inherited=false)
- ]
-
- [Serializable]
- public abstract class SecurityAttribute : Attribute {
-
- private SecurityAction m_Action;
- private bool m_Unrestricted;
-
- public SecurityAttribute(SecurityAction action) {
- if (!SecurityAction.IsDefined(typeof(SecurityAction), action)) {
- throw new System.ArgumentException();
- }
- }
-
- public abstract IPermission CreatePermission();
-
- public bool Unrestricted {
- get {
- return m_Unrestricted;
- }
- set {
- m_Unrestricted = value;
- }
- }
-
- public SecurityAction Action {
- get {
- return m_Action;
- }
- set {
- m_Action = value;
- }
- }
- } // public abstract class SecurityAttribute
-} // namespace System.Security.Permissions
+//------------------------------------------------------------------------------
+//
+// System.Security.Permissions.SecurityAttribute.cs
+//
+// Copyright (C) 2001 Nick Drochak, All Rights Reserved
+//
+// Author: Nick Drochak, ndrochak@gol.com
+// Created: 2002-01-06
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Security;
+
+namespace System.Security.Permissions {
+ [System.AttributeUsage(
+ System.AttributeTargets.Assembly
+ | System.AttributeTargets.Class
+ | System.AttributeTargets.Struct
+ | System.AttributeTargets.Constructor
+ | System.AttributeTargets.Method,
+ AllowMultiple=true,
+ Inherited=false)
+ ]
+
+ [Serializable]
+ public abstract class SecurityAttribute : Attribute {
+
+ private SecurityAction m_Action;
+ private bool m_Unrestricted;
+
+ public SecurityAttribute (SecurityAction action)
+ {
+ Action = action;
+ }
+
+ public abstract IPermission CreatePermission ();
+
+ public bool Unrestricted {
+ get {
+ return m_Unrestricted;
+ }
+ set {
+ m_Unrestricted = value;
+ }
+ }
+
+ public SecurityAction Action {
+ get {
+ return m_Action;
+ }
+ set {
+ if (!SecurityAction.IsDefined(typeof(SecurityAction), value)) {
+ throw new System.ArgumentException();
+ }
+ m_Action = value;
+ }
+ }
+ } // public abstract class SecurityAttribute
+} // namespace System.Security.Permissions
diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs b/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs
index 26175e7cb36..265684848b5 100644
--- a/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs
@@ -1,17 +1,16 @@
//
// System.Security.Permissions.SecurityPermission.cs
//
-// Author:
-// Dan Lewis (dihlewis@yahoo.co.uk)
+// Authors:
+// Dan Lewis (dihlewis@yahoo.co.uk)
+// Sebastien Pouliot (spouliot@motus.com)
//
// (C) 2002
-//
-// Stubbed.
+// Portions (C) 2003 Motus Technologies Inc. (http://www.motus.com)
//
using System;
using System.Globalization;
-using System.Security.Permissions;
namespace System.Security.Permissions {
@@ -19,10 +18,16 @@ namespace System.Security.Permissions {
public sealed class SecurityPermission :
CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission {
- [MonoTODO]
- public SecurityPermission (PermissionState state)
+ private SecurityPermissionFlag flags;
+
+ // constructors
+
+ public SecurityPermission (PermissionState state)
{
- this.flags = SecurityPermissionFlag.NoFlags;
+ if (state == PermissionState.Unrestricted)
+ flags = SecurityPermissionFlag.AllFlags;
+ else
+ flags = SecurityPermissionFlag.NoFlags;
}
public SecurityPermission (SecurityPermissionFlag flags)
@@ -35,10 +40,9 @@ namespace System.Security.Permissions {
set { flags = value; }
}
- [MonoTODO]
public bool IsUnrestricted ()
{
- return false;
+ return (flags == SecurityPermissionFlag.AllFlags);
}
public override IPermission Copy ()
@@ -46,22 +50,53 @@ namespace System.Security.Permissions {
return new SecurityPermission (flags);
}
- [MonoTODO]
+ internal SecurityPermission Cast (IPermission target)
+ {
+ SecurityPermission perm = (target as SecurityPermission);
+ if (perm == null)
+ throw new ArgumentException ("wrong type for target");
+ return perm;
+ }
+
public override IPermission Intersect (IPermission target)
{
- return null;
+ if (target == null)
+ return null;
+
+ SecurityPermission perm = Cast (target);
+ if (this.IsUnrestricted () && perm.IsUnrestricted ())
+ return new SecurityPermission (PermissionState.Unrestricted);
+ if (this.IsUnrestricted ())
+ return perm.Copy ();
+ if (perm.IsUnrestricted ())
+ return this.Copy ();
+ return new SecurityPermission (flags & perm.flags);
}
- [MonoTODO]
public override IPermission Union (IPermission target)
{
- return null;
+ if (target == null)
+ return this.Copy ();
+
+ SecurityPermission perm = Cast (target);
+ if (this.IsUnrestricted () || perm.IsUnrestricted ())
+ return new SecurityPermission (PermissionState.Unrestricted);
+
+ return new SecurityPermission (flags | perm.flags);
}
- [MonoTODO]
public override bool IsSubsetOf (IPermission target)
{
- return false;
+ if (target == null)
+ return (flags == SecurityPermissionFlag.NoFlags);
+
+ SecurityPermission perm = Cast (target);
+ if (perm.IsUnrestricted ())
+ return true;
+ if (this.IsUnrestricted ())
+ return false;
+
+ return ((flags & ~perm.flags) == 0);
}
public override void FromXml (SecurityElement e)
@@ -93,10 +128,6 @@ namespace System.Security.Permissions {
return e;
}
- // private
-
- private SecurityPermissionFlag flags;
-
// IBuiltInPermission
int IBuiltInPermission.GetTokenIndex ()
{
diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs
index 868b199f267..c09437208a3 100644
--- a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs
@@ -1,216 +1,235 @@
-//------------------------------------------------------------------------------
-//
-// System.Security.Permissions.SecurityPermissionAttribute.cs
-//
-// Copyright (C) 2001 Nick Drochak, All Rights Reserved
-//
-// Author: Nick Drochak, ndrochak@gol.com
-// Created: 2002-01-06
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Security.Permissions {
- [System.AttributeUsage(
- System.AttributeTargets.Assembly
- | System.AttributeTargets.Class
- | System.AttributeTargets.Struct
- | System.AttributeTargets.Constructor
- | System.AttributeTargets.Method,
- AllowMultiple=true,
- Inherited=false)
- ]
- public sealed class SecurityPermissionAttribute : CodeAccessSecurityAttribute {
- private SecurityPermissionFlag m_Flags = SecurityPermissionFlag.NoFlags;
-
- public SecurityPermissionAttribute(SecurityAction action) : base(action) {
- if (!SecurityAction.IsDefined(typeof(SecurityAction), action)) {
- throw new System.ArgumentException();
- }
- }
-
- public bool Assertion {
- get{
- return ((m_Flags & SecurityPermissionFlag.Assertion) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.Assertion;
- }
- else{
- m_Flags -= SecurityPermissionFlag.Assertion;
- }
- }
- }
-
- public bool ControlAppDomain {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlAppDomain) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlAppDomain;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlAppDomain;
- }
- }
- }
-
- public bool ControlDomainPolicy {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlDomainPolicy) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlDomainPolicy;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlDomainPolicy;
- }
- }
- }
-
- public bool ControlEvidence {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlEvidence) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlEvidence;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlEvidence;
- }
- }
- }
-
- public bool ControlPolicy {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlPolicy) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlPolicy;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlPolicy;
- }
- }
- }
-
- public bool ControlPrincipal {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlPrincipal) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlPrincipal;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlPrincipal;
- }
- }
- }
-
- public bool ControlThread {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlThread) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlThread;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlThread;
- }
- }
- }
-
- public bool Execution {
- get{
- return ((m_Flags & SecurityPermissionFlag.Execution) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.Execution;
- }
- else{
- m_Flags -= SecurityPermissionFlag.Execution;
- }
- }
- }
-
- public bool Infrastructure {
- get{
- return ((m_Flags & SecurityPermissionFlag.Infrastructure) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.Infrastructure;
- }
- else{
- m_Flags -= SecurityPermissionFlag.Infrastructure;
- }
- }
- }
-
- public bool RemotingConfiguration {
- get{
- return ((m_Flags & SecurityPermissionFlag.RemotingConfiguration) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.RemotingConfiguration;
- }
- else{
- m_Flags -= SecurityPermissionFlag.RemotingConfiguration;
- }
- }
- }
-
- public bool SerializationFormatter {
- get{
- return ((m_Flags & SecurityPermissionFlag.SerializationFormatter) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.SerializationFormatter;
- }
- else{
- m_Flags -= SecurityPermissionFlag.SerializationFormatter;
- }
- }
- }
-
- public bool SkipVerification {
- get{
- return ((m_Flags & SecurityPermissionFlag.SkipVerification) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.SkipVerification;
- }
- else{
- m_Flags -= SecurityPermissionFlag.SkipVerification;
- }
- }
- }
-
- public override IPermission CreatePermission() {
- return new SecurityPermission(m_Flags);
- }
-
- public SecurityPermissionFlag Flags {
- get {
- return m_Flags;
- }
- set {
- m_Flags = value;
- }
- }
- } // public sealed class SecurityPermissionAttribute
-} // namespace System.Security.Permissions
+//------------------------------------------------------------------------------
+//
+// System.Security.Permissions.SecurityPermissionAttribute.cs
+//
+// Copyright (C) 2001 Nick Drochak, All Rights Reserved
+//
+// Author: Nick Drochak, ndrochak@gol.com
+// Created: 2002-01-06
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Security;
+
+namespace System.Security.Permissions {
+ [System.AttributeUsage(
+ System.AttributeTargets.Assembly
+ | System.AttributeTargets.Class
+ | System.AttributeTargets.Struct
+ | System.AttributeTargets.Constructor
+ | System.AttributeTargets.Method,
+ AllowMultiple=true,
+ Inherited=false)
+ ]
+ [Serializable]
+ public sealed class SecurityPermissionAttribute : CodeAccessSecurityAttribute {
+ private SecurityPermissionFlag m_Flags;
+
+ public SecurityPermissionAttribute (SecurityAction action) : base(action)
+ {
+ m_Flags = SecurityPermissionFlag.NoFlags;
+ }
+
+ public bool Assertion {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.Assertion) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.Assertion;
+ }
+ else{
+ m_Flags &= SecurityPermissionFlag.Assertion;
+ }
+ }
+ }
+
+ public bool ControlAppDomain {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.ControlAppDomain) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.ControlAppDomain;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.ControlAppDomain;
+ }
+ }
+ }
+
+ public bool ControlDomainPolicy {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.ControlDomainPolicy) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.ControlDomainPolicy;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.ControlDomainPolicy;
+ }
+ }
+ }
+
+ public bool ControlEvidence {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.ControlEvidence) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.ControlEvidence;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.ControlEvidence;
+ }
+ }
+ }
+
+ public bool ControlPolicy {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.ControlPolicy) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.ControlPolicy;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.ControlPolicy;
+ }
+ }
+ }
+
+ public bool ControlPrincipal {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.ControlPrincipal) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.ControlPrincipal;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.ControlPrincipal;
+ }
+ }
+ }
+
+ public bool ControlThread {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.ControlThread) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.ControlThread;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.ControlThread;
+ }
+ }
+ }
+
+ public bool Execution {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.Execution) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.Execution;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.Execution;
+ }
+ }
+ }
+
+ public bool Infrastructure {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.Infrastructure) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.Infrastructure;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.Infrastructure;
+ }
+ }
+ }
+
+ public bool RemotingConfiguration {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.RemotingConfiguration) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.RemotingConfiguration;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.RemotingConfiguration;
+ }
+ }
+ }
+
+ public bool SerializationFormatter {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.SerializationFormatter) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.SerializationFormatter;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.SerializationFormatter;
+ }
+ }
+ }
+
+ public bool SkipVerification {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.SkipVerification) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.SkipVerification;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.SkipVerification;
+ }
+ }
+ }
+
+ public bool UnmanagedCode {
+ get {
+ return ((m_Flags & SecurityPermissionFlag.UnmanagedCode) != 0);
+ }
+ set {
+ if (value) {
+ m_Flags |= SecurityPermissionFlag.UnmanagedCode;
+ }
+ else {
+ m_Flags &= SecurityPermissionFlag.UnmanagedCode;
+ }
+ }
+ }
+
+ public override IPermission CreatePermission ()
+ {
+ SecurityPermission perm = null;
+ if (this.Unrestricted)
+ perm = new SecurityPermission (PermissionState.Unrestricted);
+ else
+ perm = new SecurityPermission (m_Flags);
+ return perm;
+ }
+
+ public SecurityPermissionFlag Flags {
+ get {
+ return m_Flags;
+ }
+ set {
+ m_Flags = value;
+ }
+ }
+ } // public sealed class SecurityPermissionAttribute
+} // namespace System.Security.Permissions
diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs
index 156ab76ecb3..38170f53b88 100755
--- a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs
+++ b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs
@@ -9,37 +9,22 @@
//
// (C) 2001 Ximian, Inc. http://www.ximian.com
-
namespace System.Security.Permissions {
-
- /// <summary>
- /// </summary>
[Flags]
+ [Serializable]
public enum SecurityPermissionFlag {
- /// <summary>
- /// </summary>
NoFlags = 0x00000000,
- /// <summary>
- /// </summary>
Assertion = 0x00000001,
- /// <summary>
- /// </summary>
UnmanagedCode = 0x00000002,
- /// <summary>
- /// </summary>
SkipVerification = 0x00000004,
- /// <summary>
- /// </summary>
Execution = 0x00000008,
- /// <summary>
- /// </summary>
ControlThread = 0x00000010,
ControlEvidence = 0x00000020,
@@ -57,12 +42,9 @@ namespace System.Security.Permissions {
RemotingConfiguration = 0x00000800,
Infrastructure = 0x00001000,
-
#if ! NET_1_0
BindingRedirects = 0x00002000,
#endif
- /// <summary>
- /// </summary>
AllFlags = Assertion | UnmanagedCode | SkipVerification | Execution | ControlThread
| ControlAppDomain | ControlDomainPolicy | ControlEvidence | ControlPolicy
| ControlPrincipal | Infrastructure | RemotingConfiguration | SerializationFormatter
diff --git a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs
index af087373588..3a496ad4a59 100644
--- a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs
@@ -21,6 +21,8 @@ namespace System.Security.Permissions {
public SiteIdentityPermission (PermissionState state)
{
+ if (state == PermissionState.Unrestricted)
+ throw new ArgumentException ("Unsupported PermissionState.Unrestricted for Identity Permission");
}
public SiteIdentityPermission (string site)
@@ -31,7 +33,11 @@ namespace System.Security.Permissions {
// Properties
public string Site {
- get { return _site; }
+ get {
+ if (_site == null)
+ throw new NullReferenceException ("Site");
+ return _site;
+ }
set { _site = value; }
}
diff --git a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs
index 8300cde7712..8e836e69bf2 100644
--- a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs
@@ -7,13 +7,12 @@
//
using System;
-using System.Security.Permissions;
namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class SiteIdentityPermissionAttribute : CodeAccessSecurityAttribute {
@@ -34,7 +33,15 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
- return new SiteIdentityPermission (site);
+ if (this.Unrestricted)
+ throw new ArgumentException ("Unsupported PermissionState.Unrestricted");
+
+ SiteIdentityPermission perm = null;
+ if (site == null)
+ perm = new SiteIdentityPermission (PermissionState.None);
+ else
+ perm = new SiteIdentityPermission (site);
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs b/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs
index 0fb4bdeff6b..c6ea67a95f5 100644
--- a/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs
@@ -4,7 +4,7 @@
// Author:
// Sebastien Pouliot (spouliot@motus.com)
//
-// (C) 2002 Motus Technologies Inc. (http://www.motus.com)
+// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
//
using System;
@@ -22,6 +22,8 @@ namespace System.Security.Permissions {
{
if (state == PermissionState.Unrestricted)
throw new ArgumentException ("state");
+ name = String.Empty;
+ version = new Version (0, 0);
}
public StrongNameIdentityPermission (StrongNamePublicKeyBlob blob, string name, Version version)
diff --git a/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs
index 6f5c2cb0da8..55509fb3060 100644
--- a/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs
@@ -12,7 +12,7 @@ namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class StrongNameIdentityPermissionAttribute : CodeAccessSecurityAttribute {
@@ -46,10 +46,31 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
- byte[] keyblob = Convert.FromBase64String (key);
- StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (keyblob);
- Version v = new Version (version);
- return new StrongNameIdentityPermission (blob, name, v);
+ if (this.Unrestricted)
+ throw new ArgumentException ("Unsupported PermissionState.Unrestricted");
+
+ StrongNameIdentityPermission perm = null;
+ if ((name == null) && (key == null) && (version == null))
+ perm = new StrongNameIdentityPermission (PermissionState.None);
+ else {
+ if (key == null)
+ throw new ArgumentException ("PublicKey is required");
+
+ byte[] keyblob = Convert.FromBase64String (key);
+ StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (keyblob);
+
+ Version v = null;
+ if (version != null)
+ v = new Version (version);
+ else
+ v = new Version ();
+
+ if (name == null)
+ name = String.Empty;
+
+ perm = new StrongNameIdentityPermission (blob, name, v);
+ }
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/UIPermission.cs b/mcs/class/corlib/System.Security.Permissions/UIPermission.cs
index cc1f9d0611e..87c4a15bdfb 100644
--- a/mcs/class/corlib/System.Security.Permissions/UIPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/UIPermission.cs
@@ -22,6 +22,10 @@ namespace System.Security.Permissions {
public UIPermission (PermissionState state)
{
+ if (state == PermissionState.Unrestricted) {
+ _clipboard = UIPermissionClipboard.AllClipboard;
+ _window = UIPermissionWindow.AllWindows;
+ }
}
public UIPermission (UIPermissionClipboard clipboardFlag)
diff --git a/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs
index 94e742327af..f6a11fb4af6 100644
--- a/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs
@@ -12,7 +12,7 @@ namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class UIPermissionAttribute : CodeAccessSecurityAttribute {
@@ -39,7 +39,12 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
- return new UIPermission (window, clipboard);
+ UIPermission perm = null;
+ if (this.Unrestricted)
+ perm = new UIPermission (PermissionState.Unrestricted);
+ else
+ perm = new UIPermission (window, clipboard);
+ return perm;
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs
index 06a4e67f039..ee85299999b 100644
--- a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs
+++ b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs
@@ -31,7 +31,11 @@ namespace System.Security.Permissions {
}
public string Url {
- get { return url; }
+ get {
+ if (url == null)
+ throw new NullReferenceException ("Url");
+ return url;
+ }
set { url = value; }
}
diff --git a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs
index 7a25d6b2a47..8ffc5129822 100644
--- a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs
@@ -1,22 +1,24 @@
//
// System.Security.Permissions.UrlIdentityPermissionAttribute.cs
//
-// Duncan Mak <duncan@ximian.com>
+// Authors:
+// Duncan Mak <duncan@ximian.com>
+// Sebastien Pouliot (spouliot@motus.com)
//
// (C) 2002 Ximian, Inc. http://www.ximian.com
+// Portions (C) 2003 Motus Technologies Inc. (http://www.motus.com)
//
using System;
-using System.Security.Permissions;
-namespace System.Security.Permissions
-{
+namespace System.Security.Permissions {
+
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
- public sealed class UrlIdentityPermissionAttribute : CodeAccessSecurityAttribute
- {
+ public sealed class UrlIdentityPermissionAttribute : CodeAccessSecurityAttribute {
+
// Fields
private string url;
@@ -33,7 +35,15 @@ namespace System.Security.Permissions
// Methods
public override IPermission CreatePermission ()
{
- return new UrlIdentityPermission (url);
+ if (this.Unrestricted)
+ throw new ArgumentException ("Unsupported PermissionState.Unrestricted for Identity Permissions");
+
+ // Note: It is possible to create a permission with a
+ // null URL but not to create a UrlIdentityPermission (null)
+ if (url == null)
+ return new UrlIdentityPermission (PermissionState.None);
+ else
+ return new UrlIdentityPermission (url);
}
}
}
diff --git a/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs
index 6cea70c2f4a..2bcc1008eab 100644
--- a/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs
+++ b/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs
@@ -1,19 +1,21 @@
//
// System.Security.Permissions.ZoneIdentityPermissionAttribute.cs
//
-// Duncan Mak <duncan@ximian.com>
+// Author:
+// Duncan Mak <duncan@ximian.com>
+// Sebastien Pouliot (spouliot@motus.com)
//
// (C) 2002 Ximian, Inc. http://www.ximian.com
+// Portions (C) 2003 Motus Technologies Inc. (http://www.motus.com)
//
using System;
-using System.Security.Permissions;
namespace System.Security.Permissions {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
+ AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public sealed class ZoneIdentityPermissionAttribute : CodeAccessSecurityAttribute {
@@ -21,7 +23,10 @@ namespace System.Security.Permissions {
private SecurityZone zone;
// Constructor
- public ZoneIdentityPermissionAttribute (SecurityAction action) : base (action) {}
+ public ZoneIdentityPermissionAttribute (SecurityAction action) : base (action)
+ {
+ zone = SecurityZone.NoZone;
+ }
// Properties
public SecurityZone Zone
@@ -33,6 +38,9 @@ namespace System.Security.Permissions {
// Methods
public override IPermission CreatePermission ()
{
+ if (this.Unrestricted)
+ throw new ArgumentException ("Unsupported PermissionState.Unrestricted");
+
return new ZoneIdentityPermission (zone);
}
}