Skip to content

Commit ede6542

Browse files
committed
In NET_4_0 mode, the SecurityCritical attribute must be applied to implementations of ISerializable.GetObjectData(). I believe this prevents use under partial trust. Maybe we should implement the new ISafeSerializationData interface instead.
1 parent f795a3c commit ede6542

17 files changed

+72
-1
lines changed

src/NHibernate/ADOException.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
2-
using System.Runtime.Serialization;
2+
using System.Runtime.Serialization;
3+
using System.Security;
34
using System.Security.Permissions;
45

56
namespace NHibernate
@@ -57,6 +58,9 @@ protected ADOException(SerializationInfo info, StreamingContext context) : base(
5758

5859
[SecurityPermission(SecurityAction.LinkDemand,
5960
Flags=SecurityPermissionFlag.SerializationFormatter)]
61+
#if NET_4_0
62+
[SecurityCritical]
63+
#endif
6064
public override void GetObjectData(SerializationInfo info, StreamingContext context)
6165
{
6266
base.GetObjectData(info, context);

src/NHibernate/AdoNet/ConnectionManager.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Data;
33
using System.Runtime.Serialization;
4+
using System.Security;
45
using System.Security.Permissions;
56

67
using NHibernate.Engine;
@@ -294,6 +295,9 @@ private ConnectionManager(SerializationInfo info, StreamingContext context)
294295

295296
[SecurityPermission(SecurityAction.LinkDemand,
296297
Flags = SecurityPermissionFlag.SerializationFormatter)]
298+
#if NET_4_0
299+
[SecurityCritical]
300+
#endif
297301
public void GetObjectData(SerializationInfo info, StreamingContext context)
298302
{
299303
info.AddValue("ownConnection", ownConnection);

src/NHibernate/AdoNet/TooManyRowsAffectedException.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Runtime.Serialization;
3+
using System.Security;
34
using System.Security.Permissions;
45

56
namespace NHibernate.AdoNet
@@ -26,6 +27,9 @@ protected TooManyRowsAffectedException(SerializationInfo info, StreamingContext
2627

2728
[SecurityPermission(SecurityAction.LinkDemand,
2829
Flags=SecurityPermissionFlag.SerializationFormatter)]
30+
#if NET_4_0
31+
[SecurityCritical]
32+
#endif
2933
public override void GetObjectData(SerializationInfo info, StreamingContext context)
3034
{
3135
base.GetObjectData(info, context);

src/NHibernate/Cfg/Configuration.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.IO;
77
using System.Linq;
88
using System.Reflection;
9+
using System.Security;
910
using System.Text;
1011
using System.Xml;
1112
using System.Xml.Schema;
@@ -123,6 +124,9 @@ private T GetSerialedObject<T>(SerializationInfo info, string name)
123124
return (T)info.GetValue(name, typeof(T));
124125
}
125126

127+
#if NET_4_0
128+
[SecurityCritical]
129+
#endif
126130
public void GetObjectData(SerializationInfo info, StreamingContext context)
127131
{
128132
ConfigureProxyFactoryFactory();

src/NHibernate/Engine/StatefulPersistenceContext.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections;
33
using System.Collections.Generic;
44
using System.Runtime.Serialization;
5+
using System.Security;
56
using System.Security.Permissions;
67
using System.Text;
78
using Iesi.Collections.Generic;
@@ -1496,6 +1497,9 @@ internal StatefulPersistenceContext(SerializationInfo info, StreamingContext con
14961497
}
14971498

14981499
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
1500+
#if NET_4_0
1501+
[SecurityCritical]
1502+
#endif
14991503
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
15001504
{
15011505
log.Debug("serializing persistent-context");

src/NHibernate/Impl/SessionFactoryImpl.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Data;
44
using System.Runtime.Serialization;
5+
using System.Security;
56
using System.Text;
67
using System.Linq;
78
using Iesi.Collections.Generic;
@@ -419,6 +420,9 @@ public EventListeners EventListeners
419420

420421
#region IObjectReference Members
421422

423+
#if NET_4_0
424+
[SecurityCritical]
425+
#endif
422426
public object GetRealObject(StreamingContext context)
423427
{
424428
// the SessionFactory that was serialized only has values in the properties

src/NHibernate/Impl/SessionImpl.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Data;
55
using System.Linq.Expressions;
66
using System.Runtime.Serialization;
7+
using System.Security;
78
using System.Security.Permissions;
89
using NHibernate.AdoNet;
910
using NHibernate.Collection;
@@ -135,6 +136,9 @@ private SessionImpl(SerializationInfo info, StreamingContext context)
135136
/// </remarks>
136137
[SecurityPermission(SecurityAction.LinkDemand,
137138
Flags = SecurityPermissionFlag.SerializationFormatter)]
139+
#if NET_4_0
140+
[SecurityCritical]
141+
#endif
138142
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
139143
{
140144
log.Debug("writting session to serializer");

src/NHibernate/InstantiationException.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Runtime.Serialization;
3+
using System.Security;
34
using System.Security.Permissions;
45

56
namespace NHibernate
@@ -91,6 +92,9 @@ protected InstantiationException(SerializationInfo info, StreamingContext contex
9192
/// </param>
9293
[SecurityPermission(SecurityAction.LinkDemand,
9394
Flags=SecurityPermissionFlag.SerializationFormatter)]
95+
#if NET_4_0
96+
[SecurityCritical]
97+
#endif
9498
public override void GetObjectData(SerializationInfo info, StreamingContext context)
9599
{
96100
base.GetObjectData(info, context);

src/NHibernate/InvalidProxyTypeException.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections;
33
using System.Runtime.Serialization;
4+
using System.Security;
45
using System.Security.Permissions;
56
using System.Text;
67
using System.Collections.Generic;
@@ -43,6 +44,9 @@ public InvalidProxyTypeException(SerializationInfo info, StreamingContext contex
4344

4445
[SecurityPermission(SecurityAction.LinkDemand,
4546
Flags=SecurityPermissionFlag.SerializationFormatter)]
47+
#if NET_4_0
48+
[SecurityCritical]
49+
#endif
4650
public override void GetObjectData(SerializationInfo info, StreamingContext context)
4751
{
4852
base.GetObjectData(info, context);

src/NHibernate/NonUniqueObjectException.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Runtime.Serialization;
3+
using System.Security;
34
using System.Security.Permissions;
45

56
namespace NHibernate
@@ -80,6 +81,9 @@ protected NonUniqueObjectException(SerializationInfo info, StreamingContext cont
8081
/// </param>
8182
[SecurityPermission(SecurityAction.LinkDemand,
8283
Flags=SecurityPermissionFlag.SerializationFormatter)]
84+
#if NET_4_0
85+
[SecurityCritical]
86+
#endif
8387
public override void GetObjectData(SerializationInfo info, StreamingContext context)
8488
{
8589
base.GetObjectData(info, context);

0 commit comments

Comments
 (0)