Remove System.Security.Permissions.SecurityPermissionAttribute from System.Private...
authorEugene Rozenfeld <erozen@microsoft.com>
Wed, 25 Jan 2017 19:09:57 +0000 (11:09 -0800)
committerEugene Rozenfeld <erozen@microsoft.com>
Thu, 26 Jan 2017 00:36:44 +0000 (16:36 -0800)
When compiling with /unsafe+ Roslyn emits
  .permissionset reqmin
             = {class 'System.Security.Permissions.SecurityPermissionAttribute, System.Private.CoreLib,
             Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' =
             {property bool 'SkipVerification' = bool(true)}}
if System.Security.Permissions.SecurityPermissionAttribute is present.

In particular, System.Private.CoreLib.dll is compiled with /unsafe+ and has the above in the manifest.

https://github.com/dotnet/coreclr/commit/e516211b2d3a3ae2dbd80f2c94b129910a9e280d
made BclRewriter remove System.Security.Permissions.SecurityPermissionAttribute
from System.Private.CoreLib.dll but the above reference remained.

This change removes System.Security.Permissions.SecurityPermissionAttribute completely
to avoid confusion when tools are analyzing msil and try to resolve the manifest
of System.Private.CoreLib.dll.

src/mscorlib/src/Internal/Runtime/Augments/RuntimeThread.cs
src/mscorlib/src/System/Security/Permissions/PermissionAttributes.cs
src/mscorlib/src/System/Threading/Thread.cs

index 3aafe01..8f3a8c4 100644 (file)
@@ -163,8 +163,6 @@ namespace Internal.Runtime.Augments
         ** thread is not currently blocked in that manner, it will be interrupted
         ** when it next begins to block.
         =========================================================================*/
-#pragma warning disable 618 // obsolete types: SecurityPermissionAttribute, SecurityAction
-#pragma warning restore 618 // obsolete types: SecurityPermissionAttribute, SecurityAction
         public void Interrupt() => InterruptInternal();
 
         // Internal helper (since we can't place security demands on
index e6fc2a4..428a399 100644 (file)
@@ -503,109 +503,6 @@ namespace System.Security.Permissions
     }
 
     [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly, AllowMultiple = true, Inherited = false )] 
-    [System.Runtime.InteropServices.ComVisible(true)]
-    [Serializable]
-    // The csharp compiler requires these types to be public, but they are not used elsewhere.
-    [Obsolete("SecurityPermissionAttribute is no longer accessible to application code.")]
-    sealed public class SecurityPermissionAttribute : CodeAccessSecurityAttribute
-    {
-        private SecurityPermissionFlag m_flag = SecurityPermissionFlag.NoFlags;
-    
-        public SecurityPermissionAttribute( SecurityAction action )
-            : base( action )
-        {
-        }
-
-        public SecurityPermissionFlag Flags {
-            get { return m_flag; }
-            set { m_flag = value; }
-        }
-
-        public bool Assertion {
-            get { return (m_flag & SecurityPermissionFlag.Assertion) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.Assertion : m_flag & ~SecurityPermissionFlag.Assertion; }
-        }
-
-        public bool UnmanagedCode {
-            get { return (m_flag & SecurityPermissionFlag.UnmanagedCode) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.UnmanagedCode : m_flag & ~SecurityPermissionFlag.UnmanagedCode; }
-        }
-
-        public bool SkipVerification {
-            get { return (m_flag & SecurityPermissionFlag.SkipVerification) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.SkipVerification : m_flag & ~SecurityPermissionFlag.SkipVerification; }
-        }
-
-        public bool Execution {
-            get { return (m_flag & SecurityPermissionFlag.Execution) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.Execution : m_flag & ~SecurityPermissionFlag.Execution; }
-        }
-
-        public bool ControlThread {
-            get { return (m_flag & SecurityPermissionFlag.ControlThread) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.ControlThread : m_flag & ~SecurityPermissionFlag.ControlThread; }
-        }
-    
-        public bool ControlEvidence {
-            get { return (m_flag & SecurityPermissionFlag.ControlEvidence) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.ControlEvidence : m_flag & ~SecurityPermissionFlag.ControlEvidence; }
-        }
-    
-        public bool ControlPolicy {
-            get { return (m_flag & SecurityPermissionFlag.ControlPolicy) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.ControlPolicy : m_flag & ~SecurityPermissionFlag.ControlPolicy; }
-        }
-    
-        public bool SerializationFormatter {
-            get { return (m_flag & SecurityPermissionFlag.SerializationFormatter) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.SerializationFormatter : m_flag & ~SecurityPermissionFlag.SerializationFormatter; }
-        }
-
-        public bool ControlDomainPolicy {
-            get { return (m_flag & SecurityPermissionFlag.ControlDomainPolicy) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.ControlDomainPolicy : m_flag & ~SecurityPermissionFlag.ControlDomainPolicy; }
-        }
-    
-        public bool ControlPrincipal {
-            get { return (m_flag & SecurityPermissionFlag.ControlPrincipal) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.ControlPrincipal : m_flag & ~SecurityPermissionFlag.ControlPrincipal; }
-        }
-
-        public bool ControlAppDomain {
-            get { return (m_flag & SecurityPermissionFlag.ControlAppDomain) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.ControlAppDomain : m_flag & ~SecurityPermissionFlag.ControlAppDomain; }
-        } 
-
-        public bool RemotingConfiguration {
-            get { return (m_flag & SecurityPermissionFlag.RemotingConfiguration) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.RemotingConfiguration : m_flag & ~SecurityPermissionFlag.RemotingConfiguration; }
-        }
-
-        [System.Runtime.InteropServices.ComVisible(true)]
-        public bool Infrastructure {
-            get { return (m_flag & SecurityPermissionFlag.Infrastructure) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.Infrastructure : m_flag & ~SecurityPermissionFlag.Infrastructure; }
-        }
-    
-        public bool BindingRedirects {
-            get { return (m_flag & SecurityPermissionFlag.BindingRedirects) != 0; }
-            set { m_flag = value ? m_flag | SecurityPermissionFlag.BindingRedirects : m_flag & ~SecurityPermissionFlag.BindingRedirects; }
-        }
-
-        public override IPermission CreatePermission()
-        {
-            if (m_unrestricted)
-            {
-                return new SecurityPermission( PermissionState.Unrestricted );
-            }
-            else
-            {
-                return new SecurityPermission( m_flag );
-            }
-        }
-    }
-
-    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Assembly, AllowMultiple = true, Inherited = false )] 
 [System.Runtime.InteropServices.ComVisible(true)]
     [Serializable]
 #pragma warning disable 618
index 339869d..b23e8a9 100644 (file)
@@ -343,9 +343,6 @@ namespace System.Threading {
         ** If Abort is called twice on the same thread, a DuplicateThreadAbort
         ** exception is thrown.
         =========================================================================*/
-#pragma warning disable 618
-        [SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)]
-#pragma warning restore 618
         public void Abort()
         {
             AbortInternal();