Преглед изворни кода

Add SecurityCritical attributes to serialization, and add the AllowPartiallyTrustedCallers
attribute.

This fixes issue 91.

Jon Skeet пре 11 година
родитељ
комит
3918275376

+ 5 - 1
src/ProtocolBuffers/CustomSerialization.cs

@@ -37,9 +37,9 @@
  * This entire source file is not supported on some platform
  */
 #if !NOSERIALIZABLE
-
 using System;
 using System.Runtime.Serialization;
+using System.Security;
 
 namespace Google.ProtocolBuffers
 {
@@ -51,6 +51,7 @@ namespace Google.ProtocolBuffers
     [Serializable]
     partial class AbstractMessageLite<TMessage, TBuilder> : ISerializable
     {
+        [SecurityCritical]
         void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
         {
             info.SetType(typeof(SerializationSurrogate));
@@ -93,6 +94,7 @@ namespace Google.ProtocolBuffers
                 return message;
             }
 
+            [SecurityCritical]
             void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
             {
                 info.AddValue("message", _message);
@@ -103,6 +105,7 @@ namespace Google.ProtocolBuffers
     [Serializable]
     partial class AbstractBuilderLite<TMessage, TBuilder> : ISerializable
     {
+        [SecurityCritical]
         void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
         {
             info.SetType(typeof(SerializationSurrogate));
@@ -135,6 +138,7 @@ namespace Google.ProtocolBuffers
                 return builder;
             }
 
+            [SecurityCritical]
             void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
             {
                 info.AddValue("message", _message);

+ 3 - 1
src/ProtocolBuffers/Properties/AssemblyInfo.cs

@@ -37,6 +37,7 @@ using System.Runtime.CompilerServices;
 // General Information about an assembly is controlled through the following 
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
+using System.Security;
 
 [assembly: AssemblyTitle("ProtocolBuffers")]
 [assembly: AssemblyDescription("")]
@@ -64,4 +65,5 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyFileVersion("2.4.1.521")]
 #endif
 
-[assembly: CLSCompliant(true)]
+[assembly: CLSCompliant(true)]
+[assembly: AllowPartiallyTrustedCallers]