Use DISABLE_CAS_USE to remove the use of several *Permission calls (forcibly removed...
authorSebastien Pouliot <sebastien@xamarin.com>
Wed, 25 Nov 2015 22:08:21 +0000 (17:08 -0500)
committerMarek Safar <marek.safar@gmail.com>
Tue, 3 May 2016 09:40:05 +0000 (11:40 +0200)
mcs/class/referencesource/System.Data.Linq/misc/SecurityUtils.cs
mcs/class/referencesource/System.Data/System/Data/Common/AdapterUtil.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Globals.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerContext.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerWriteContext.cs
mcs/class/referencesource/System/compmod/system/componentmodel/design/DesigntimeLicenseContext.cs
mcs/class/referencesource/System/compmod/system/diagnostics/Trace.cs
mcs/class/referencesource/System/compmod/system/diagnostics/TraceEventCache.cs
mcs/class/referencesource/System/compmod/system/diagnostics/TraceInternal.cs

index 159dedbb6c64824800d5117d1e9af67d2c300f84..e4ede4374f489ff81e9c074a2864aa44c00bf630 100644 (file)
@@ -37,6 +37,7 @@ namespace System.Windows.Forms
     /// </devdoc>
     internal static class SecurityUtils {
 
+#if !DISABLE_CAS_USE
         private static volatile ReflectionPermission memberAccessPermission = null;
         private static volatile ReflectionPermission restrictedMemberAccessPermission = null;
 
@@ -58,24 +59,30 @@ namespace System.Windows.Forms
                 return restrictedMemberAccessPermission;
             }
         }
+#endif
 
         private static void DemandReflectionAccess(Type type) {
+#if !DISABLE_CAS_USE
             try {
                 MemberAccessPermission.Demand();
             }
             catch (SecurityException) {
                 DemandGrantSet(type.Assembly);
             }
+#endif
         }
 
         [SecuritySafeCritical]
         private static void DemandGrantSet(Assembly assembly) {
+#if !DISABLE_CAS_USE
             PermissionSet targetGrantSet = assembly.PermissionSet;
             targetGrantSet.AddPermission(RestrictedMemberAccessPermission);
             targetGrantSet.Demand();
+#endif
         }
 
         private static bool HasReflectionPermission(Type type) {
+#if !DISABLE_CAS_USE
             try {
                 DemandReflectionAccess(type);
                 return true;
@@ -84,6 +91,9 @@ namespace System.Windows.Forms
             }
 
             return false;
+#else
+            return true;
+#endif
         }
 
        
index 04cd1e4a72cf456d12e87700413fd092948ff0c3..1116bfda7643e5c469c326133001c17b0f565ecd 100644 (file)
@@ -2120,6 +2120,7 @@ namespace System.Data.Common {
         [ResourceExposure(ResourceScope.Machine)]
         [ResourceConsumption(ResourceScope.Machine)]
         static internal Stream GetFileStream(string filename) {
+#if !DISABLE_CAS_USE
             (new FileIOPermission(FileIOPermissionAccess.Read, filename)).Assert();
             try {
                 return new FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.Read);
@@ -2127,11 +2128,15 @@ namespace System.Data.Common {
             finally {
                 FileIOPermission.RevertAssert();
             }
+#else
+            return new FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.Read);
+#endif
         }
 
         [ResourceExposure(ResourceScope.Machine)]
         [ResourceConsumption(ResourceScope.Machine)]
         static internal FileVersionInfo GetVersionInfo(string filename) {
+#if !DISABLE_CAS_USE
             (new FileIOPermission(FileIOPermissionAccess.Read, filename)).Assert(); // MDAC 62038
             try {
                 return FileVersionInfo.GetVersionInfo(filename); // MDAC 60411
@@ -2139,7 +2144,11 @@ namespace System.Data.Common {
             finally {
                 FileIOPermission.RevertAssert();
             }
+#else
+            return FileVersionInfo.GetVersionInfo(filename); // MDAC 60411
+#endif
         }
+
 #if MOBILE
         static internal object LocalMachineRegistryValue(string subkey, string queryvalue) {
             return null;
index 0cdf9cde68b3c6d5905d579f9b74130ae7268f4d..f18da31004bd1ed5d7460c0754a28d30cf974b62 100644 (file)
@@ -1105,6 +1105,7 @@ namespace System.Runtime.Serialization
             }
         }
 
+#if !DISABLE_CAS_USE
         [Fx.Tag.SecurityNote(Critical = "Holds instance of SecurityPermission that we will Demand for SerializationFormatter."
             + " Should not be modified to something else.")]
         [SecurityCritical]
@@ -1136,7 +1137,7 @@ namespace System.Runtime.Serialization
                 return memberAccessPermission;
             }
         }
-
+#endif
 
         public const bool DefaultIsRequired = false;
         public const bool DefaultEmitDefaultValue = true;
index a374cebc45505e20a375bf48732e406b2534bc69..6a71d9a194ce720d30924b411a8c31f90d1eb739 100644 (file)
@@ -89,11 +89,13 @@ namespace System.Runtime.Serialization
         [SecuritySafeCritical]
         public void DemandSerializationFormatterPermission()
         {
+#if !DISABLE_CAS_USE
             if (!demandedSerializationFormatterPermission)
             {
                 Globals.SerializationFormatterPermission.Demand();
                 demandedSerializationFormatterPermission = true;
             }
+#endif
         }
 
         [Fx.Tag.SecurityNote(Critical = "Demands MemberAccess permission. demanding the right permission is critical.",
@@ -101,11 +103,13 @@ namespace System.Runtime.Serialization
         [SecuritySafeCritical]
         public void DemandMemberAccessPermission()
         {
+#if !DISABLE_CAS_USE
             if (!demandedMemberAccessPermission)
             {
                 Globals.MemberAccessPermission.Demand();
                 demandedMemberAccessPermission = true;
             }
+ #endif
         }
 
         public StreamingContext GetStreamingContext()
index a5f77c25aff10528f3bdfc0013f4ee124d78ec4f..3d953393b4bd0819310efdef8c111cee09cdebe6 100644 (file)
@@ -494,8 +494,10 @@ namespace System.Runtime.Serialization
         [MethodImpl(MethodImplOptions.NoInlining)]
         internal void GetObjectData(ISerializable obj, SerializationInfo serInfo, StreamingContext context)
         {
+#if !DISABLE_CAS_USE
             // Demand the serialization formatter permission every time
             Globals.SerializationFormatterPermission.Demand();
+#endif
             obj.GetObjectData(serInfo, context);
         }
 
index e4cd3937f2ba84021550c03de40df0a5ed1c7427..6938ce280f6ea9405ff25143a7b96177a50c076b 100644 (file)
@@ -93,6 +93,7 @@ namespace System.ComponentModel.Design {
                     Debug.WriteLineIf(RuntimeLicenseContextSwitch.TraceVerbose,"rawfile: " + rawFile);
                     string codeBase;
                     
+#if !DISABLE_CAS_USE
                     // FileIOPermission is required for ApplicationBase in URL-hosted domains
                     FileIOPermission perm = new FileIOPermission(PermissionState.Unrestricted);
                     perm.Assert();
@@ -102,6 +103,9 @@ namespace System.ComponentModel.Design {
                     finally {
                         CodeAccessPermission.RevertAssert();
                     }
+#else
+                    codeBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+#endif
                     if (rawFile != null && codeBase != null) {
                         licenseFile = new Uri(new Uri(codeBase), rawFile);
                     }
@@ -129,6 +133,7 @@ namespace System.ComponentModel.Design {
                             // file://fullpath/foo.exe
                             //
                             string fileName;
+#if !DISABLE_CAS_USE
                             FileIOPermission perm = new FileIOPermission(PermissionState.Unrestricted);
                             perm.Assert();
                             try
@@ -140,6 +145,10 @@ namespace System.ComponentModel.Design {
                             {
                                 CodeAccessPermission.RevertAssert();
                             }
+#else
+                            fileName = GetLocalPath(asm.EscapedCodeBase);
+                            fileName = new FileInfo(fileName).Name;
+#endif
 
                             Stream s = asm.GetManifestResourceStream(fileName + ".licenses");
                             if (s == null) {
@@ -245,10 +254,11 @@ namespace System.ComponentModel.Design {
 
         static Stream OpenRead(Uri resourceUri) {
             Stream result = null;
-
+#if !DISABLE_CAS_USE
             PermissionSet perms = new PermissionSet(PermissionState.Unrestricted);
 
             perms.Assert();
+#endif
             try {
                 WebClient webClient = new WebClient();
                 webClient.Credentials = CredentialCache.DefaultCredentials;
@@ -257,10 +267,11 @@ namespace System.ComponentModel.Design {
             catch (Exception e) {
                 Debug.Fail(e.ToString());
             }
+#if !DISABLE_CAS_USE
             finally {
                 CodeAccessPermission.RevertAssert();
             }
-
+#endif
             return result;
         }
     }
index 9d9a20aac1cbcc292856348d74e8cd868e59f233..2f9df3f456471c22dc435a3cf5a2d82561034d11 100644 (file)
@@ -30,9 +30,10 @@ namespace System.Diagnostics {
         public static TraceListenerCollection Listeners {
             [HostProtection(SharedState=true)]
             get {
+#if !DISABLE_CAS_USE
                 // Do a full damand
                 new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
-                
+#endif
                 return TraceInternal.Listeners;
             }
         }
@@ -112,9 +113,10 @@ namespace System.Diagnostics {
         /// </devdoc>
         [System.Diagnostics.Conditional("TRACE")]
         public static void Close() {
+#if !DISABLE_CAS_USE
             // Do a full damand
             new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
-            
+ #endif
             TraceInternal.Close();
         }
 
index 42724de13b1be002843f8a38728a7999391235ec..eee1e05c12539e977e6903810feac7eaf6ac9b7c 100644 (file)
@@ -30,9 +30,10 @@ namespace System.Diagnostics {
             get {
                 if (stackTrace == null)
                     stackTrace = Environment.StackTrace;
+#if !DISABLE_CAS_USE
                 else
                     new EnvironmentPermission(PermissionState.Unrestricted).Demand();
-
+#endif
                 return stackTrace;
             }
         }
@@ -76,9 +77,10 @@ namespace System.Diagnostics {
         [ResourceExposure(ResourceScope.None)]
         [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
         private static void InitProcessInfo() {
+#if !DISABLE_CAS_USE
             // Demand unmanaged code permission
             new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
-
+#endif
             if (processName == null) {
                 Process p = Process.GetCurrentProcess();
                 try {
index 6890780312993d035f3523352751a6227bb17c4b..42bbb8a75c0849dfb6c45f493295a3748e0fd5bf 100644 (file)
@@ -62,7 +62,9 @@ namespace System.Diagnostics {
         internal static string AppName {
             get {
                 if (appName == null) {
+#if !DISABLE_CAS_USE
                     new EnvironmentPermission(EnvironmentPermissionAccess.Read, "Path").Assert();
+#endif
                     appName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
                 }
                 return appName;